sys.dm_exec_procedure_stats (Transact-SQL)

适用于:SQL Server (所有受支持的版本) Azure SQL数据库Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW)

返回缓存存储过程的聚合性能统计信息。 该视图为每个缓存的存储过程计划都返回一行,行的生存期与存储过程保持缓存状态的时间一样长。 在从缓存中删除存储过程时,也将从该视图中删除对应行。 此时,将引发类似于 sys.dm_exec_query_stats 的 Performance Statistics SQL 跟踪事件。

在Azure SQL数据库中,动态管理视图无法公开影响数据库包含或公开用户有权访问的其他数据库的信息。 为了避免公开此信息,将筛选出包含不属于已连接租户的数据的每一行。

注意

sys.dm_exec_procedure_stats的结果可能因每次执行而有所不同,因为数据仅反映已完成的查询,而不是仍在进行中的查询。 若要从 Azure Synapse Analytics 或 Analytics Platform System (PDW) 调用此名称,请使用名称sys.dm_pdw_nodes_exec_procedure_stats。 Azure Synapse Analytics 中的无服务器 SQL 池不支持此语法。

列名称 数据类型 说明
database_id int 存储过程所在的数据库 ID。
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 自编译此存储过程以来,此存储过程的执行消耗的总 CPU 时间(以微秒为单位)。

对于本机编译的存储过程,如果许多执行所用的时间都不到 1 毫秒,则 total_worker_time 可能不精确。
last_worker_time bigint 上次执行存储过程所用的 CPU 时间(微秒)。 1
min_worker_time bigint 此存储过程在单个执行过程中消耗的最小 CPU 时间(以微秒为单位)。 1
max_worker_time bigint 此存储过程在单个执行过程中消耗的最大 CPU 时间(以微秒为单位)。 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 自编译此存储过程以来,通过执行溢出的页总数。

适用于:从 2017 SQL Server 开始, (14.x) CU3
last_spills bigint 上次执行存储过程时溢出的页数。

适用于:从 2017 SQL Server 开始, (14.x) CU3
min_spills bigint 此存储过程在单个执行期间已溢出的最小页数。

适用于:从 2017 SQL Server 开始, (14.x) CU3
max_spills bigint 此存储过程在单个执行期间已溢出的最大页数。

适用于:从 2017 SQL Server 开始, (14.x) CU3
pdw_node_id int 此分发所在节点的标识符。

适用于:Azure Synapse Analytics、Analytics Platform System (PDW)
total_page_server_reads bigint 自编译此存储过程以来,执行此存储过程执行的页服务器读取总数。

适用范围:Azure SQL 数据库超大规模
last_page_server_reads bigint 上次执行存储过程时执行的页服务器读取次数。

适用范围:Azure SQL 数据库超大规模
min_page_server_reads bigint 此存储过程在单个执行期间执行过的最小页服务器读取次数。

适用范围:Azure SQL 数据库超大规模
max_page_server_reads bigint 此存储过程在单个执行期间执行的最大页服务器读取次数。

适用范围:Azure SQL 数据库超大规模

1 对于启用统计信息收集时本机编译的存储过程,将收集工作器时间(以毫秒为单位)。 如果查询执行不到 1 毫秒,则该值将为 0。

权限

对于 SQL Server 和 SQL 托管实例,需要 VIEW SERVER STATE 权限。

在 SQL 数据库“基本”、“S0”和“S1”服务目标中,对于“弹性池”中的数据库,服务器管理员帐户、Azure Active Directory 管理员帐户或##MS_ServerStateReader##服务器角色中的成员身份是必需的。 对于所有其他 SQL 数据库服务目标,需要数据库的 VIEW DATABASE STATE 权限或 ##MS_ServerStateReader## 服务器角色中的成员身份。

备注

存储过程执行完成后,将更新该视图中的统计信息。

示例

以下示例返回有关按平均占用时间衡量的前十个存储过程的信息。

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)