Самый полезный инструмент для DBA от Adam Machanic (sp_WhoIsActive)

Самый полезный инструмент для DBA от Adam Machanic (sp_WhoIsActive)Процедура Who is Active (sp_WhoIsActive):

Адам потратил на разработку этой процедуры более тысячи часов и она ДЕЙСТВИТЕЛЬНО будет вам незаменимым помощников в повседневной работе.

В этой статье будет представлена краткая вырезка из описания возможностей данной процедуры, полная инструкция от Адама описана на английском языке по ссылке.

Скачать процедуру

Данная процедура позволит вам понять что же действительно происходит с вашим сервером, кто и что вызывает нагрузку в данный момент времени. Ещё раз хочу обратить ваше внимание на то, что «Who Is Active» показывает только текущую активность сервера. Её можно использовать для сбора и последующего анализа данных.

Общая информация:

  • Внутри используется 15 DMV
  • Хранится в базе данных master, поэтому к ней можно обратиться из любого места кода
  • Необходимое разрешение для её работы — VIEW SERVER STATE
  • Работает на SQL Server 2005 и SQL Server 2008.
  • Вся активность агрегирована по сессии. Это значит, что сколько бы вы задач не выполняли от данной сессии, в настройках по-умолчанию, вы получите только 1, агрегированный результат по этой сессии

Варианты работы:

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

Общая помощь по данной процедуре:

1. Можно особо не изучать процедуру и использовать её с параметрами по-умолчанию и она всё равно будет незаменимым помощником в вашей работе:

F7_01_active_sleeping_thumb_39A85420

2. В настройках по-умолчанию скрыты некоторые сессии. Вот пример, как можно вывести их все:

3. В столбце [sql_text] отображается только текущая операция, но если вы хотите видеть всю активность, то необходимо указать следующий параметр:

4. Если вы хотите видеть что вызвало этот [sql_text], то вам необходимо добавить следующий параметр, который добавит колонку [sql_command]:

5. К выводу можно добавить план выполнения. Обратите внимание что это достаточно дорогая операция. Применяйте её с осторожностью:

6. Вывести в столбец [wait_info] не только самое важное ожидание, но и все остальные:

7. Отфильтровать вывод. Всегда помните, что фильтры совокупны/агрегированы для каждой сессии

8. Исключение из поиска (можно комбинировать с обычным фильтром):

9. Можно так же убрать агрегацию транзакций одной сессии и вывести их по отдельности:

10. Вывести более детальную информацию. Будет добавлен столбец [additional_info] с информацией в формате XML

11. Можно посмотреть количество заблокированных процессов каждой сессией:

12. Указать сортировку вывода:

13. Указать какие столбцы должны быть выведены:

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

Появятся дополнительные столбцы:

physical_io_delta
reads_delta
physical_reads_delta
writes_delta
tempdb_allocations_delta
tempdb_current_delta
CPU_delta
context_switches_delta
used_memory_delta

15. Получить результат в таблицу

 

Adam Machanic очень хорошо поработал для того, чтобы нам было легче работать. Данная процедура распространяется бесплатно, но вы всегда можете оставить свои пожертвования для человека, который проделал такой титанический труд. Adam Machanic рекомендует перечислять на его счёт по 40 USD за каждый используемый вами экземпляр сервера, где установлена его процедура. Благодарить создателя или нет решать только вам.

Ссылка для пожертвований (общая страница на английском языке)

Прямая ссылка для пожертвований

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

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

Войти с помощью: