четверг, 3 июня 2010 г.

Wait Stats

Как sql Server выполняет запросы?

Для выполнения позовательского запроса Sql Server использует планировщик (scheduler). Каждый планировщик относится к одному из процесоров. В каждый момент времени планировщик может работать только с одной пользовательской сессией (session).
Если сессия имеет статус "running" это означает что у неё есть все необходимые ресурсы и находится в процессе выполнения.
Если сессия имеет статус "runnable" значит она ждет пока осводится один из планеровщиков. В заданный момент времени таких ждущих сессий может быть много и они образуют очередь "runnable".
Если запрос имеет статус "suspended" это означает что он переведен в другую ждущую очередь "waiting". Сессии находящиеся в этой очереди находится в ожидании ресурсов другого типа (блокировки, диск, память, сеть). Каждой сессии ставится в соответствие причина ожидания и отслеживается время проведенное в ждущем режиме.Как только необходимый ресурс становится доступен, сессия снова переводится в очередь "runnable" и продолжает ждать пока планировщик освободится для выполнения запроса.

Request Lifecycle

Видно, что задержки при выполнении запроса происходят по множеству причин. Эти причины нужно отслеживать и анализировать. Для этих целей Sql Server имеет целый ряд инструментов:

Во-первых в Performance Monitor есть целая серия
SQLServer:Wait Statistics в которую входят счетчики:

Lock waits, Lock waits, Log buffer waits, Log write waits, Memory grant queue waits, Network IO waits, Non-Page latch waits, Page IO latch waits, Page latch waits, Thread-safe memory objects waits, Transaction ownership waits, Wait for the worker, Workspace synchronization waits

для каждого из этих счетчиков можно отслеживать следующие параметры:

Average wait time (ms), Cumulative wait time (ms) per second, Waits in progress, Waits started per second

Во-вторых существует системное представление sys.dm_os_wait_stats отображающее накопительную информацию по различным причинам задержек.

В-третьих полезным механизмом мориторинга являются события Extended Events. В частности, пример их использования описан в статье Debugging slow response times in SQL Server 2008. В этой статье приводится ссылка на другую статью обязательную для прочтению
Troubleshooting Performance Problems in SQL Server 2005



Средства сбора статистики по задержкам есть в большинстве современны СУБД
Tuning with Wait Stats in Oracle and SQL Server


Другие статьи:

SQL Server Best Practices Article

TechEd - IO and Wait Stats

Perf Tuning with waits statistics

SQL Server Wait Events: Taking the Guesswork out of Performance Profiling

Комментариев нет:

Locations of visitors to this page