Как управлять блокировками и быстродействием в SQL?

В SQL мы можем использовать трассировку, чтобы определить, какие запросы являются тяжелыми (несбалансированными) по времени исполнения/чтения/записи, а также вызывают блокировки записей. Но мы не можем знать какие процедуры порождают их.

Чтобы узнать это, мы должны использовать монитор клиента, который дает нам представления о «тяжелых» запросах и точное расположение процедур , которые их используют.

В этом случае мы должны постоянно запускать монитор клиента на ВСЕХ клиентах. И даже если мы это сделаем это, мы все равно будем иметь проблему с определением, какие программы блокируют друг друга.

Заметим: работа монитора клиента или трассировка влияют на производительность.

Итак, чтобы иметь представление, с чего начать, мы должны понять, какие программы порождают проблемы и когда. Но мы не можем постоянно смотреть трассировки, генерируемые сиюминутно и опрашивать пользователей, что они сейчас делают.

С этой формой, которую Вы можете запустить в сессии Navision, Вы постоянно следите за тем, что происходит, и когда наступает избыточная активность или блокировка, форма предупреждаем Вас звуковым сигналом. В этот момент Вы можете проверить, что происходит и позвонить пользователям сессий, которые порождают избыточную активность, или блокируют других пользователей, или блокируют друг друга. Спросите их какие процедуры они используют. Спустя некоторое время Вы можете получить некоторое представление о программах, имеющих некоторые проблемы. Если Вы сопоставите данные, полученные трассировкой, Вы также можете найти таблицу, которая является причиной замедления и понять то, какие процедуры и какие таблицы вызывают проблему. Вы можете легко найти этот код в программе. Или Вы можете запустить монитор клиента и запустив программу, увидеть, что происходит.

Это не «волшебное» решение для определения проблем с быстродействием, но это еще один инструмент для борьбы с проблемами снижения производительности.

Главная форма:

Немного информации:

  • Форма основана на таблице “Sessions”

Поля:

  • “Update interval in seconds”: с какой частотой (в сек.) обновлять форму
  • “Signal Block after N Seconds”: ”: Как долго (поле “Wait Time (ms)) может быть активна блокировка перед тем, как форма ее считает.
  • “Beep on Heavy Physical IO”: если операции записи/считывания превышают это значение, то подается звуковой сигнал. В зависимости от аппаратной конфигурации Вашего сервера вы можете увеличивать/уменьшать это значение. На некоторых системах 1000 это очень ТЯЖЕЛО, но на других (с МНОЖЕСТВОМ дисков в RAID10 для базы данных) нагрузка не так велика).
  • “Beep On Heavy CPU Time”: если общая загрузка процессора превысит эту величину, то будет подан звуковой сигнал. В зависимости от вашего серверного аппаратного обеспечения Вы можете увеличить/уменьшить это значение.
  • “Beep On Block” (“Звуковой Сигнал При Блокировке”): TRUE : если есть блокировка, то подается звуковой сигнал. FALSE: Звуковой сигнал не подается.
  • “Log Active Sessions”: Вы можете также протоколировать активные сессии во временную таблицу для последующего анализа. Активные – означает что в сессии была какая-либо активность по записи/считыванию или времени использования процессора.
  • “Log Only Blocks”: Вы можете включить протоколирование только блокировок, а не всех активных сессий.
  • Кнопка “Show Active Sessions”: Отображает журнал активных сессий. Кнопка запускает другую форму. Смотрите ниже для получения большей информации.
  • Кнопка “Logging”: если Вы хотите контролировать определенную сессию, выберите сессию и нажмите эту кнопку.

Кнопка “Show Active Sessions”(“Показать активные сессии”):

Комментарии к форме:

  • Эта форма основана на временной таблице. Если Вы закроете главную форму, данные будут утеряны.
  • Эта временная таблица ведет журнал всех сессий, если они имели какую-либо активность. Так-как, эта таблица растет быстро, было бы хорошей идеей регулярно сохранять ее данные в файл.

Поля:

  • «txtFileName»: наименование файла в котором сохраняются данные.
  • Кнопка“Save Records to File”: сбрасывает временную таблицу и записывает записи в файл “txtFileName”. Если данный файл уже существует, записи ДОБАВЛЮТСЯ в него. Файл разделен tab-разделителями. После того как записи были записаны в файл, они удаляются из временной таблицы.

Кнопка “Logging”/“Протоколирование”:

Немного информации:

  • Эта форма основана на временной таблице. Если вы закроете главную форму, данные будут утеряны;
  • Исследуйте определенную Вами сессию в текущем режиме. Множество “Logging”-форм могут быть открыты для разных сессий.

Поля:

  • “Update interval in seconds”: Вы можете изменить интервал обновления в с которым сохранять требуемые данные.
  • “Max logging-records”: Вы можете ограничить количество записей, сохраняемых в таблице. Когда оно будет достигнуто, более старые записи будут удалены;
  • “Pause”: Вы можете остановить протоколирование для более удобного просмотра данных.

Исходный код форм можно скачать здесь.

Оригинал статьи вы можете прочесть здесь — http://mibuso.com/howtoinfo.asp?FileID=19

Автор:

Количество статей, опубликованных автором: 1. Дополнительная информация об авторе появится вскоре.

Комментарии (Один комментарий)

  1. Vi har rene kropps trening timer Robert, og det er utfordrende om du er utrent eller trent. Det fine med kropps trening er at du kan ikke jukse med og senke belastning. Du må ha den kroppen du har med deg hele tiden. Det finnes masse utfordrende og tøffe øvelser med bare kropp. Men kom og vær med en gang så kan du få kjenne det på kroppen.Hilsen Allan Fallrø

Добавить комментарий