Published on

February 14, 2014

Понимание статистики ожидания SQL Server

В нашей предыдущей статье мы обсудили важность статистики ожидания и как начать ее сбор. В этой статье мы более подробно рассмотрим, как статистика ожидания генерируется в SQL Server и как она может помочь вам анализировать и оптимизировать производительность вашей базы данных.

Планировщики

Прежде чем мы углубимся в статистику ожидания, важно понять концепцию планировщиков в SQL Server. Планировщик создается для каждого логического процессора в вашей системе, с дополнительным планировщиком для выделенного административного подключения (DAC). Основная роль планировщиков – планирование времени ЦП для потоков.

Вы можете просмотреть планировщики в вашем экземпляре SQL Server, выполнив запрос к представлению sys.dm_os_schedulers. У каждого планировщика есть три фазы или состояния, через которые проходят потоки:

  1. ВЫПОЛНЕНИЕ: Поток в настоящее время выполняется ЦП.
  2. ГОТОВ: Поток имеет все необходимые ресурсы и ожидает в очереди, чтобы быть выполненным ЦП.
  3. ПРИОСТАНОВЛЕН: Поток ожидает дополнительных ресурсов.

Поток будет перемещаться через эти фазы в определенном порядке. Он начинается в очереди ПРИОСТАНОВЛЕН, собирая необходимые ресурсы. Как только ресурсы становятся доступными, он перемещается в очередь ГОТОВ, которая является очередью потоков по принципу “первым пришел – первым обслужен”. Наконец, поток достигает вершины очереди ГОТОВ и входит в фазу ВЫПОЛНЕНИЕ, где его выполняет ЦП. Если потоку требуются дополнительные ресурсы или он выполняется слишком долго, он будет возвращен в очередь ПРИОСТАНОВЛЕН и снова пройдет через фазы.

Статистика ожидания

Теперь, когда мы понимаем, как планировщики выполняют потоки, давайте рассмотрим, как генерируется статистика ожидания. Ниже приведена иллюстрация, где генерируются времена ожидания:

Изображение планировщика

Время ожидания ресурса – это время, которое поток проводит в фазе ПРИОСТАНОВЛЕН, ожидая ресурсы. С другой стороны, время ожидания сигнала – это время, которое поток проводит в фазе ГОТОВ (или очереди) перед выполнением ЦП. Сложив эти два значения, мы получаем общее время ожидания, также известное как время ожидания. Например, если поток проводит 2 мс в фазе ПРИОСТАНОВЛЕН и 3 мс в фазе ГОТОВ, время ожидания будет составлять 5 мс.

SQL Server записывает эти времена ожидания в двух представлениях динамического управления (DMV), которые вы можете использовать для мониторинга статистики ожидания:

  • sys.dm_os_waiting_tasks: Это представление показывает, что выполняется на ваших планировщиках в момент запроса. Столбец wait_duration_ms указывает время ожидания потока, а столбец wait_type показывает тип ожидания, которое испытывает поток. Анализируя это представление, вы можете быстро определить, на что SQL Server ожидает, когда он работает медленно. Если вы заметите высокую частоту одного и того же типа ожидания или очень долгое время ожидания, это может указывать на то, что доступ к определенному ресурсу замедляет ваш сервер.
  • sys.dm_os_wait_stats: Это представление предоставляет накопительный вид типов ожидания и соответствующих времен ожидания с момента запуска экземпляра SQL Server или очистки статистики вручную. Столбец wait_time_ms показывает общее время ожидания для каждого типа ожидания, а столбец single_wait_time_ms отображает точное время, которое тип ожидания провел в очереди ГОТОВ. Кроме того, столбец waiting_tasks_count указывает количество вхождений для каждого типа ожидания.

Путем запроса этих представлений вы можете получить ценную информацию о том, как выполняется ваш SQL Server и на что он ожидает. Эта информация может помочь вам выявить узкие места и оптимизировать производительность вашей базы данных.

Понимание статистики ожидания критично для администраторов баз данных и разработчиков, которые хотят оптимизировать производительность своего SQL Server. Мониторинг и анализ статистики ожидания позволяют выявить и устранить проблемы производительности, в конечном итоге повышая общую эффективность вашей базы данных.

Для получения дополнительной информации о статистике ожидания и о том, как ее собирать, обратитесь к нашей предыдущей статье: Почему статистика ожидания важна и как начать ее собирать прямо сейчас!

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.