sys.dm_exec_procedure_stats (Transact-SQL)
返回缓存存储过程的聚合性能统计信息。该视图为每个缓存的存储过程计划都返回一行,行的生存期与存储过程保持缓存状态的时间一样长。在从缓存中删除存储过程时,也将从该视图中删除对应行。此时,将引发类似于 sys.dm_exec_query_stats 的 Performance Statistics SQL 跟踪事件。
注意 |
---|
如果服务器中当前正在执行工作负荷,则 sys.dm_exec_procedure_stats 的初始查询可能会生成不准确的结果。可以通过重新运行查询来确定更准确的结果。 |
列名 |
数据类型 |
说明 |
---|---|---|
database_id |
int |
存储过程所在的数据库 ID。 |
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 动态管理视图一起使用。 |
cached_time |
datetime |
存储过程添加到缓存的时间。 |
cached_time |
datetime |
存储过程添加到缓存的时间。 |
last_execution_time |
datetime |
上次执行存储过程的时间。 |
execution_count |
bigint |
存储过程自上次编译以来所执行的次数。 |
total_worker_time |
bigint |
此存储过程自编译以来执行所用的 CPU 时间总量(微秒)。 |
last_worker_time |
bigint |
上次执行存储过程所用的 CPU 时间(微秒)。 |
min_worker_time |
bigint |
此存储过程在单次执行期间曾占用的最大 CPU 时间(微秒)。 |
max_worker_time |
bigint |
此存储过程在单次执行期间曾占用的最大 CPU 时间(微秒)。 |
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_elapsed_time |
bigint |
完成此存储过程的执行所用的总时间(微秒)。 |
last_elapsed_time |
bigint |
最近完成此存储过程的执行所用的时间(微秒)。 |
min_elapsed_time |
bigint |
任意一次完成此存储过程的执行所用的最短时间(微秒)。 |
max_elapsed_time |
bigint |
任意一次完成此存储过程的执行所用的最长时间(微秒)。 |
权限
需要对服务器的 VIEW SERVER STATE 权限。
注释
存储过程执行完成后,将更新该视图中的统计信息。
示例
以下示例返回有关按平均占用时间衡量的前十个存储过程的信息。
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;
GO