sys.dm_exec_procedure_stats (Transact-SQL)

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics AnalyticsPlatform System (PDW)

Возвращает суммарную статистику производительности для кэшированных хранимых процедур. Это представление содержит по одной строке для каждого кэшированного плана хранимой процедуры. Время существования строки равно времени пребывания хранимой процедуры в кэше. Когда хранимая процедура удаляется из кэша, соответствующая строка исключается из представления. В то время событие трассировки sql статистики производительности вызывается аналогично sys.dm_exec_query_stats.

В База данных SQL Azure динамические административные представления не могут предоставлять сведения, влияющие на доступность базы данных или предоставление сведений о других базах данных, к которым пользователь имеет доступ. Чтобы избежать предоставления этой информации, отфильтровывается каждая строка, содержащая данные, которые не принадлежат подключену клиенту.

Примечание.

Результаты sys.dm_exec_procedure_stats могут отличаться в зависимости от каждого выполнения, так как данные отражают только завершенные запросы, а не те, которые еще не выполнялись. Чтобы вызвать это из Azure Synapse Analytics или Analytics Platform System (PDW), используйте имя sys.dm_pdw_nodes_exec_procedure_stats. Этот синтаксис не поддерживается бессерверным пулом SQL в Azure Synapse Analytics.

Имя столбца Тип данных Description
database_id int Идентификатор базы данных, в которой находится хранимая процедура.

В База данных SQL Azure значения уникальны в одной базе данных или эластичном пуле, но не в логическом сервере.
object_id int Идентификатор объекта хранимой процедуры.
type char(2) Тип объекта:

P = хранимая процедура SQL

PC = хранимая процедура сборки (среда CLR)

X = расширенная хранимая процедура
type_desc nvarchar(60) Описание типа объекта:

SQL_STORED_PROCEDURE

CLR_STORED_PROCEDURE

EXTENDED_STORED_PROCEDURE
sql_handle varbinary(64) Это можно использовать для корреляции с запросами в sys.dm_exec_query_stats , которые были выполнены из этой хранимой процедуры.
plan_handle varbinary(64) Идентификатор плана в оперативной памяти. Этот идентификатор является временным и константным, только пока план сохраняется в кэше. Это значение может использоваться с динамическим представлением управления sys.dm_exec_cached_plans .

Значение всегда равно 0x000, если скомпилированная в собственном коде хранимая процедура запрашивает оптимизированную для памяти таблицу.
cached_time datetime Время добавления хранимой процедуры в кэш.
last_execution_time datetime Время последнего выполнения хранимой процедуры.
execution_count bigint Количество попыток выполнения хранимой процедуры с момента последнего компиляции.
total_worker_time bigint Общий объем времени ЦП в микросекундах, который использовался выполнением этой хранимой процедуры, так как она была скомпилирована.

Для скомпилированных в собственном коде хранимых процедур функция total_worker_time может быть неточной, если за время меньше миллисекунды выполняется большое количество хранимых процедур.
last_worker_time bigint Время ЦП, затраченное на последнее выполнение хранимой процедуры, в микросекундах. 1
min_worker_time bigint Минимальное время ЦП в микросекундах, которое эта хранимая процедура когда-либо использовала во время одного выполнения. 1
max_worker_time bigint Максимальное время ЦП в микросекундах, которое эта хранимая процедура когда-либо использовала во время одного выполнения. 1
total_physical_reads bigint Общее количество физических операций чтения, выполняемых выполнением этой хранимой процедуры после компиляции.

Значение всегда равно 0 при запросе оптимизированной для памяти таблицы.
last_physical_reads bigint Количество физических операций чтения, выполненных при последнем выполнении хранимой процедуры.

Значение всегда равно 0 при запросе оптимизированной для памяти таблицы.
min_physical_reads bigint Минимальное количество физических считывает, что эта хранимая процедура когда-либо выполнялась во время одного выполнения.

Значение всегда равно 0 при запросе оптимизированной для памяти таблицы.
max_physical_reads bigint Максимальное количество физических операций чтения, которое эта хранимая процедура когда-либо выполнялась во время одного выполнения.

Значение всегда равно 0 при запросе оптимизированной для памяти таблицы.
total_logical_writes bigint Общее количество логических операций записи, выполняемых выполнением этой хранимой процедуры, так как она была скомпилирована.

Значение всегда равно 0 при запросе оптимизированной для памяти таблицы.
last_logical_writes bigint Количество страниц буферного пула, засоренных при последнем выполнении плана. Если страница уже является «грязной» (т. е. измененной), операции записи не учитываются.

Значение всегда равно 0 при запросе оптимизированной для памяти таблицы.
min_logical_writes bigint Минимальное количество логических записей, которые эта хранимая процедура когда-либо выполнялась во время одного выполнения.

Значение всегда равно 0 при запросе оптимизированной для памяти таблицы.
max_logical_writes bigint Максимальное количество логических операций записи, которое эта хранимая процедура когда-либо выполнялась во время одного выполнения.

Значение всегда равно 0 при запросе оптимизированной для памяти таблицы.
total_logical_reads bigint Общее количество логических операций чтения, выполняемых выполнением этой хранимой процедуры после компиляции.

Значение всегда равно 0 при запросе оптимизированной для памяти таблицы.
last_logical_reads bigint Количество логических операций чтения, выполненных при последнем выполнении хранимой процедуры.

Значение всегда равно 0 при запросе оптимизированной для памяти таблицы.
min_logical_reads bigint Минимальное количество логических считывает, что эта хранимая процедура когда-либо выполнялась во время одного выполнения.

Значение всегда равно 0 при запросе оптимизированной для памяти таблицы.
max_logical_reads bigint Максимальное количество логических считывает, что эта хранимая процедура когда-либо выполнялась во время одного выполнения.

Значение всегда равно 0 при запросе оптимизированной для памяти таблицы.
total_elapsed_time bigint Общее время, прошедшее в микросекундах, для завершения выполнения этой хранимой процедуры.
last_elapsed_time bigint Истекшее время в микросекундах для последнего завершения выполнения этой хранимой процедуры.
min_elapsed_time bigint Минимальное истекшее время в микросекундах для любого завершенного выполнения этой хранимой процедуры.
max_elapsed_time bigint Максимальное время, прошедшее в микросекундах, для любого завершенного выполнения этой хранимой процедуры.
total_spills bigint Общее количество страниц, разливаемых выполнением этой хранимой процедуры, так как она была скомпилирована.

Область применения: начиная с SQL Server 2017 (14.x) CU3
last_spills bigint Количество страниц, разливаемых при последнем выполнении хранимой процедуры.

Область применения: начиная с SQL Server 2017 (14.x) CU3
min_spills bigint Минимальное количество страниц, которые эта хранимая процедура когда-либо разлилась во время одного выполнения.

Область применения: начиная с SQL Server 2017 (14.x) CU3
max_spills bigint Максимальное количество страниц, которые эта хранимая процедура когда-либо разлилась во время одного выполнения.

Область применения: начиная с SQL Server 2017 (14.x) CU3
pdw_node_id int Идентификатор узла, на который находится данное распределение.

Область применения: Azure Synapse Analytics, Analytics Platform System (PDW)
total_page_server_reads bigint Общее количество операций чтения сервера страницы, выполняемого выполнением этой хранимой процедуры после компиляции.

Область применения: уровень службы "Гипермасштабирование" в Базе данных SQL Azure
last_page_server_reads bigint Количество операций чтения сервера страницы при последнем выполнении хранимой процедуры.

Область применения: уровень службы "Гипермасштабирование" в Базе данных SQL Azure
min_page_server_reads bigint Минимальное количество сервера страницы считывает, что эта хранимая процедура когда-либо выполнялась во время одного выполнения.

Область применения: уровень службы "Гипермасштабирование" в Базе данных SQL Azure
max_page_server_reads bigint Максимальное количество серверов страницы считывает, что эта хранимая процедура когда-либо выполнялась во время одного выполнения.

Область применения: уровень службы "Гипермасштабирование" в Базе данных SQL Azure

1 Для скомпилированных в собственном коде хранимых процедур при включении сбора статистики рабочий период собирается в миллисекундах. Если запрос выполняется за время меньше миллисекунды, это значение будет равно 0.

Разрешения

На SQL Server и управляемом экземпляре SQL необходимо разрешение VIEW SERVER STATE.

Для целей службы База данных SQL Basic, S0 и S1, а также для баз данных в эластичных пулах, учетной записи администратора сервера, учетной записи администратора Microsoft Entra или членства в ##MS_ServerStateReader##роли сервера требуется. Для всех остальных целей обслуживания базы данных SQL требуется разрешение VIEW DATABASE STATE в базе данных или членство в роли сервера ##MS_ServerStateReader##.

Разрешения для SQL Server 2022 и более поздних версий

Требуется разрешение VIEW SERVER PERFORMANCE STATE на сервере.

Замечания

Статистика в представлении обновляется после завершения выполнения хранимой процедуры.

Примеры

В следующем примере возвращаются сведения о 10 первых хранимых процедурах, идентифицируемых по среднему затраченному времени.

SELECT TOP 10 d.object_id, d.database_id, OBJECT_NAME(object_id, database_id) 'proc name',   
    d.cached_time, d.last_execution_time, d.total_elapsed_time,  
    d.total_elapsed_time/d.execution_count AS [avg_elapsed_time],  
    d.last_elapsed_time, d.execution_count  
FROM sys.dm_exec_procedure_stats AS d  
ORDER BY [total_worker_time] DESC;  

См. также

Связанные с выполнением динамические административные представления и функции (Transact-SQL)
sys.dm_exec_sql_text (Transact-SQL)
sys.dm_exec_query_plan (Transact-SQL)
sys.dm_exec_query_stats (Transact-SQL)
sys.dm_exec_trigger_stats (Transact-SQL)
sys.dm_exec_cached_plans (Transact-SQL)