sys.dm_exec_query_stats (Transact-SQL)
Возвращает суммарную статистику производительности для кэшированных планов запросов. Представление одной строки для каждой инструкции плана в кэше и время жизни строк связано с самим планом. Когда план удаляется из кэша, соответствующие строки исключаются из представления.
Примечание |
---|
Начальный запрос представления sys.dm_exec_query_stats может выдавать неточные результаты, если на сервере выполняется рабочая нагрузка. Более точные результаты могут быть получены при повторном выполнении запроса. |
Имя столбца |
Тип данных |
Описание |
---|---|---|
sql_handle |
varbinary(64) |
Маркер, ссылающийся на пакет или хранимую процедуру, частью которой является запрос. Столбец sql_handle вместе со столбцами statement_start_offset и statement_end_offset может использоваться для получения SQL-текста запроса с помощью вызова функции динамического управления sys.dm_exec_sql_text. |
statement_start_offset |
int |
Начальная позиция запроса, который описывает строка, в соответствующем тексте пакета или сохраняемом объекте в байтах, начиная с 0. |
statement_end_offset |
int |
Конечная позиция запроса, который описывает строка, в соответствующем тексте пакета или сохраняемом объекте в байтах, начиная с 0. Значение -1 обозначает конец пакета. |
plan_generation_num |
bigint |
Порядковый номер, который может использоваться для отличия экземпляров планов после рекомпиляции. |
plan_handle |
varbinary(64) |
Маркер, ссылающийся на скомпилированный план, частью которого является запрос. Это значение можно передать функции динамического управления sys.dm_exec_query_plan для получения плана запроса. |
creation_time |
datetime |
Время компиляции плана. |
last_execution_time |
datetime |
Время начала последнего выполнения плана. |
execution_count |
bigint |
Количество выполнений плана с момента последней компиляции. |
total_worker_time |
bigint |
Общее время ЦП, затраченное на выполнение плана с момента компиляции, в микросекундах (но с точностью до миллисекунды). |
last_worker_time |
bigint |
Время ЦП, затраченное на последнее выполнение плана, в микросекундах (но с точностью до миллисекунды). |
min_worker_time |
bigint |
Минимальное время ЦП, когда-либо затраченное на выполнение плана, в микросекундах (но с точностью до миллисекунды). |
max_worker_time |
bigint |
Максимальное время ЦП, когда-либо затраченное на выполнение плана, в микросекундах (но с точностью до миллисекунды). |
total_physical_reads |
bigint |
Общее количество операций физического считывания при выполнении плана с момента его компиляции. |
last_physical_reads |
bigint |
Количество операций физического считывания за время последнего выполнения плана. |
min_physical_reads |
bigint |
Минимальное количество операций физического считывания за одно выполнение плана. |
max_physical_reads |
bigint |
Максимальное количество операций физического считывания за одно выполнение плана. |
total_logical_writes |
bigint |
Общее количество операций логической записи при выполнении плана с момента его компиляции. |
last_logical_writes |
bigint |
Количество операций логической записи за время последнего выполнения плана. |
min_logical_writes |
bigint |
Минимальное количество операций логической записи за одно выполнение плана. |
max_logical_writes |
bigint |
Максимальное количество операций логической записи за одно выполнение плана. |
total_logical_reads |
bigint |
Общее количество операций логического считывания при выполнении плана с момента его компиляции. |
last_logical_reads |
bigint |
Количество операций логического считывания за время последнего выполнения плана. |
min_logical_reads |
bigint |
Минимальное количество операций логического считывания за одно выполнение плана. |
max_logical_reads |
bigint |
Максимальное количество операций логического считывания за одно выполнение плана. |
total_clr_time |
bigint |
Общее время, затраченное на выполнение плана внутри объектов Microsoft.NET Framework среды CLR с момента его компиляции, в микросекундах (но с точностью до миллисекунды). Объекты среды CLR могут быть хранимыми процедурами, функциями, триггерами, типами и статистическими выражениями. |
last_clr_time |
bigint |
Время, затраченное на последнее выполнение плана внутри объектов .NET Framework среды CLR, в микросекундах (но с точностью до миллисекунды). Объекты среды CLR могут быть хранимыми процедурами, функциями, триггерами, типами и статистическими выражениями. |
min_clr_time |
bigint |
Минимальное время, когда-либо затраченное на выполнение плана внутри объектов .NET Framework среды CLR, в микросекундах (но с точностью до миллисекунды). Объекты среды CLR могут быть хранимыми процедурами, функциями, триггерами, типами и статистическими выражениями. |
max_clr_time |
bigint |
Максимальное время, когда-либо затраченное на выполнение плана внутри среды CLR .NET Framework, в микросекундах (но с точностью до миллисекунды). Объекты среды CLR могут быть хранимыми процедурами, функциями, триггерами, типами и статистическими выражениями. |
total_elapsed_time |
bigint |
Общее время, затраченное на выполнение плана, в микросекундах (но с точностью до миллисекунды). |
last_elapsed_time |
bigint |
Время, затраченное на последнее выполнение плана, в микросекундах (но с точностью до миллисекунды). |
min_elapsed_time |
bigint |
Минимальное время, когда-либо затраченное на выполнение плана, в микросекундах (но с точностью до миллисекунды). |
max_elapsed_time |
bigint |
Максимальное время, когда-либо затраченное на выполнение плана, в микросекундах (но с точностью до миллисекунды). |
query_hash |
Binary(8) |
Двоичное хэш-значение рассчитывается для запроса и используется для идентификации запросов с аналогичной логикой. Можно использовать хэш запроса для определения использования статистических ресурсов для запросов, которые отличаются только своими литеральными значениями. Дополнительные сведения см. в разделе Поиск и настройка сходных запросов с помощью хэширования запросов и планов запросов. |
query_plan_hash |
binary(8) |
Двоичное хэш-значение рассчитывается для плана выполнения запроса и используется для идентификации аналогичных планов выполнения запросов. Можно использовать хэш плана запроса для нахождения совокупной стоимости запросов со схожими планами выполнения. Дополнительные сведения см. в разделе Поиск и настройка сходных запросов с помощью хэширования запросов и планов запросов. |
Разрешения
Требуется разрешение VIEW SERVER STATE на сервере.
Замечания
Статистика в представлении обновляется после завершения выполнения запроса.
Примеры
А. Определение запросов TOP N
В следующем примере возвращаются сведения о пяти первых запросах, отсортированных по среднему времени ЦП. В этом примере объединяются запросы в соответствии с хэшем запроса таким образом, чтобы обеспечить группировку логически эквивалентных запросов по их совокупному потреблению ресурсов.
USE AdventureWorks;
GO
SELECT TOP 5 query_stats.query_hash AS "Query Hash",
SUM(query_stats.total_worker_time) / SUM(query_stats.execution_count) AS "Avg CPU Time",
MIN(query_stats.statement_text) AS "Statement Text"
FROM
(SELECT QS.*,
SUBSTRING(ST.text, (QS.statement_start_offset/2) + 1,
((CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE QS.statement_end_offset END
- QS.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS QS
CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) as ST) as query_stats
GROUP BY query_stats.query_hash
ORDER BY 2 DESC;
GO