sys.dm_exec_procedure_stats (Transact-SQL)
Возвращает суммарную статистику производительности для кэшированных хранимых процедур. Это представление содержит по одной строке для каждого кэшированного плана хранимой процедуры. Время существования строки равно времени пребывания хранимой процедуры в кэше. Когда хранимая процедура удаляется из кэша, соответствующая строка исключается из представления. В этот момент возникает событие трассировки статистики производительности SQL, аналогичное sys.dm_exec_query_stats.
Динамические административные представления в среде База данных SQL Windows Azure не могут предоставлять информацию, которая может повлиять на автономность базы данных, или информацию о других базах данных, к которым имеет доступ пользователь. Чтобы избежать предоставления этих сведений, все строки, содержащие данные, не принадлежащие к подключенному клиенту, фильтруются.
Примечание
Начальный запрос представления sys.dm_exec_procedure_stats может формировать неточные результаты, если на сервере существует рабочая нагрузка.Более точные результаты могут быть получены при повторном выполнении запроса.
Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (с первоначального выпуска по текущий выпуск). |
Имя столбца |
Тип данных |
Описание |
---|---|---|
database_id |
int |
Идентификатор базы данных, в которой находится хранимая процедура. |
object_id |
int |
Идентификатор объекта хранимой процедуры. |
тип |
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 |
Максимальное время, затраченное на одно выполнение хранимой процедуры, в микросекундах. |
1 Если сбор статистики включен, то накопленное время рабочей роли для скомпилированных в собственном коде хранимых процедур указывается в миллисекундах. Если запрос выполняется за время меньше миллисекунды, это значение будет равно 0.
Разрешения
Требуется разрешение VIEW SERVER 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_stats (Transact-SQL)
Динамические административные представления и функции (Transact-SQL)