sys.dm_exec_query_profiles (Transact-SQL)

Контролирует ход выполнения запросов в реальном времени. Счетчики представлены для каждого оператора в каждом потоке. Собранные данные сериализуются в SHOWPLAN XML, когда запрос завершает работу. Это динамическое административное представление позволяет отслеживать ход выполнения запроса и определять, где запрос тратит больше всего времени. Это динамическое административное представление можно объединять с другими за счет столбцов, определенных в поле описания. Динамическое административное представление можно объединить с другими счетчиками производительности (например, системный монитор, xperf) с помощью столбцов меток времени.

Важное примечаниеВажно!

Чтобы вернуть информацию, необходимо установить SET STATISTICS PROFILE ON; или SET STATISTICS XML ON;.

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2014 до текущей версии).

Возвращаемая таблица

Имя столбца

Тип данных

Описание

session_id

smallint

Определяет сеанс, в котором выполняется этот запрос. Ссылка на dm_exec_sessions.session_id.

request_id

int

Идентифицирует целевой запрос. Ссылка на dm_exec_sessions.request_id.

sql_handle

varbinary(64)

Идентифицирует целевой запрос. Ссылка на dm_exec_query_stats.sql_handle.

plan_handle

varbinary(64)

Идентифицирует целевой запрос (ссылка на dm_exec_query_stats.plan_handle).

physical_operator_name

nvarchar(256)

Имя типа физического оператора.

node_id

int

Определяет узел оператора в дереве запросов.

thread_id

int

Используется для различения потоков (для параллельного запроса), принадлежащих одному узлу оператора запроса.

task_address

varbinary(8)

Определяет задачу SQLOS, используемую этим потоком. Ссылка на dm_os_tasks.task_address.

row_count

bigint

Число строк, возвращенных оператором к настоящему моменту.

rewind_count

bigint

Число сбросов к текущему моменту.

rebind_count

bigint

Число повторных привязок к текущему моменту.

end_of_scan_count

bigint

Количество окончаний просмотров к текущему моменту.

first_active_time

bigint

Время первого вызова конструктора в миллисекундах.

estimate_row_count

bigint

Предполагаемое количество строк Может быть полезно сравнить значение estimated_row_count с фактическим значением row_count.

last_active_time

bigint

Время последнего вызова конструктора в миллисекундах.

open_time

bigint

Общее процессорное время (в миллисекундах), аккумулированное операциями целевого узла (например, открытие, закрытие и получение строки) к текущему моменту.

first_row_time

bigint

Метка времени открытия (в миллисекундах).

last_row_time

bigint

Метка времени получения первой строки (в миллисекундах).

close_time

bigint

Метка времени закрытия (в миллисекундах).

elapsed_time_ms

bigint

Время последнего перехода узла в состояние выполнения к текущему моменту.

cpu_time_ms

bigint

Общее затраченное время (в миллисекундах), аккумулированное операциями целевого узла (например, open, close и getrow) к текущему моменту.

database_id

smallint

База данных, для которой открыт набор строк.

object_id

int

Таблица, для которой открыт набор строк.

index_id

int

Индекс (если есть), для которого открыт набор строк.

scan_count

bigint

Количество просмотров таблиц и индексов к текущему моменту.

logical_read_count

bigint

Количество операций логического считывания к текущему времени.

physical_read_count

bigint

Количество операций физического считывания к текущему времени.

read_ahead_count

bigint

Количество операций упреждающего чтения к текущему времени.

write_page_count

bigint

Число операций записи страниц, вызванных сбросами, к текущему времени.

lob_scan_count

bigint

Количество просмотров таблиц и индексов LOB к текущему моменту.

lob_logical_read_count

bigint

Количество операций логического считывания LOB к текущему времени.

lob_physical_read_count

bigint

Количество операций физического считывания LOB к текущему времени.

lob-read_ahead_count

bigint

Количество операций упреждающего чтения LOB к текущему времени.

segment_read_count

int

Количество операций упреждающего чтения сегментов к текущему времени.

segment_skip_count

int

Количество сегментов, пропущенных к текущему времени.

Замечания

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

Счетчики предоставляют данные с большей степенью детализации, чем SET STATISTICS IO ON, поскольку они представлены для каждого итератора на поток. Количество потоков должно быть равно исходным результатам STATISTICS IO. Если у узла нет счетчиков ввода-вывода, поля SE имеют значение NULL.

Разрешения

Необходимо разрешение VIEW SERVER STATE на сервере.

Количество элементов связей

sys.dm_exec_query_profiles.session_id

sys.dm_exec_sessions.session_id

Один к одному

sys.dm_exec_query_profiles.request_id

sys.dm_exec_sessions.request_id

Многие к одному

sys.dm_exec_query_profiles.sql_handle

sys.dm_exec_query_stats.sql_handle

Многие к одному

sys.dm_exec_query_profiles.plan_handle

ys.dm_exec_query_stats.plan_handle

Многие к одному

sys.dm_exec_query_profiles.task_address

sys.dm_os_tasks.task_address

Многие к одному

sys.dm_exec_query_profiles.database_id

sys.databases.database_id

Многие к одному

sys.dm_exec_query_profiles.object_id

sys.objects.object_id

Многие к одному

sys.dm_exec_query_profiles.index_id

sys.indexes.index_id

Многие к одному

Примеры

Следующая инструкция возвращает сведения об операторах запросов.

SET STATISTICS PROFILE ON;
GO

SELECT  
       node_id,physical_operator_name, SUM(row_count) row_count, SUM(estimate_row_count) AS estimate_row_count, 
   CAST(SUM(row_count)*100 AS float)/SUM(estimate_row_count)
FROM sys.dm_exec_query_profiles 
WHERE session_id=54
GROUP BY node_id,physical_operator_name
ORDER BY node_id;

См. также

Справочник

Динамические административные представления и функции (Transact-SQL)

Динамические административные представления и функции, связанные с выполнением (Transact-SQL)