Как управлять блокировками и быстродействием в 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. Дополнительная информация об авторе появится вскоре.

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