sys.dm_exec_trigger_stats (Transact-SQL)

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

列名

数据类型

说明

database_id

int

触发器所在的数据库 ID。

object_id

int

触发器的对象标识号。

type

char(2)

对象的类型:

TA = 程序集 (CLR) 触发器

TR = SQL 触发器

Type_desc

nvarchar(60)

对对象类型的说明:

CLR_TRIGGER

SQL_TRIGGER

sql_handle

varbinary(64)

可用于与 sys.dm_exec_query_stats 中从此触发器中执行的查询关联。

plan_handle

varbinary(64)

内存中计划的标识符。该标识符是瞬态的,仅当计划保留在缓存中时,它才保持不变。该值可以与 sys.dm_exec_cached_plans 动态管理视图一起使用。

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 权限。

注释

查询完成后,将更新该视图中的统计信息。

示例

下面的示例返回有关按平均占用时间排序的占用 CPU 最多的前 10 个触发器的信息。

PRINT '--top 10 CPU consuming triggers '

SELECT TOP 10 d.object_id, d.database_id, DB_NAME(database_id) AS 'database_name', 
    OBJECT_NAME(object_id, database_id) AS 'trigger_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_trigger_stats AS d
ORDER BY [total_worker_time] DESC;

更改历史记录

更新的内容

使用更新的代码替换了示例。