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;
请参阅
参考
更改历史记录
更新的内容 |
---|
使用更新的代码替换了示例。 |