Performance Statistics 事件类
Performance Statistics 事件类可用于监视正在执行的查询、存储过程和触发器的性能。六个事件子类分别表示系统内查询、存储过程和触发器的生存期内的一个事件。使用这些事件子类的组合以及关联的 sys.dm_exec_query_stats、sys.dm_exec_procedure_stats 和 sys.dm_exec_trigger_stats 动态管理视图,可以重新构建任何给定查询、存储过程或触发器的性能历史记录。
Performance Statistics 事件类的数据列
下表介绍了与下面每个事件子类关联的事件类数据列:EventSubClass 0、EventSubClass 1、EventSubClass 2、EventSubClass 3、EventSubClass 4 和 EventSubClass 5。
数据列名称 |
数据类型 |
说明 |
列 ID |
可筛选 |
---|---|---|---|---|
BigintData1 |
bigint |
NULL |
52 |
是 |
BinaryData |
image |
NULL |
2 |
是 |
DatabaseID |
int |
由 USE database 语句指定的数据库的 ID;如果尚未对给定实例发出 USE database 语句,则为默认数据库的 ID。如果在跟踪中捕获到 ServerName 数据列并且服务器可用,则 SQL Server Profiler 将显示该数据库的名称。若要确定数据库的值,请使用 DB_ID 函数。 |
3 |
是 |
EventSequence |
int |
给定事件在请求中的顺序。 |
51 |
否 |
EventSubClass |
int |
事件子类类型。 0 = 当前未放入缓存的新的批查询 SQL 文本。 下列 EventSubClass 类型是在即席批查询的跟踪中生成的。 对于有 n 次查询的即席批查询:
|
21 |
是 |
IntegerData2 |
int |
NULL |
55 |
是 |
ObjectID |
int |
NULL |
22 |
是 |
Offset |
int |
NULL |
61 |
是 |
PlanHandle |
Image |
NULL |
65 |
是 |
SessionLoginName |
nvarchar |
发起会话的用户的登录名。例如,如果您使用 Login1 连接到 SQL Server,再以 Login2 的身份执行语句,则 SessionLoginName 将显示 Login1,而 LoginName 将显示 Login2。此列将同时显示 SQL Server 登录名和 Windows 登录名。 |
64 |
是 |
SPID |
int |
发生该事件的会话 ID。 |
12 |
是 |
SqlHandle |
image |
SQL 句柄,可使用该句柄通过 sys.dm_exec_sql_text 动态管理视图来获取批查询 SQL 文本。 |
63 |
是 |
StartTime |
datetime |
该事件(如果存在)的启动时间。 |
14 |
是 |
TextData |
ntext |
批查询的 SQL 文本。 |
1 |
是 |
数据列名称 |
数据类型 |
说明 |
列 ID |
可筛选 |
---|---|---|---|---|
BigintData1 |
bigint |
重新编译此计划的累积次数。 |
52 |
是 |
BinaryData |
image |
已编译计划的二进制 XML。 |
2 |
是 |
DatabaseID |
int |
由 USE database 语句指定的数据库的 ID;如果尚未对给定实例发出 USE database 语句,则为默认数据库的 ID。如果在跟踪中捕获到 ServerName 数据列并且服务器可用,则 SQL Server Profiler 将显示该数据库的名称。若要确定数据库的值,请使用 DB_ID 函数。 |
3 |
是 |
EventSequence |
int |
给定事件在请求中的顺序。 |
51 |
否 |
SessionLoginName |
nvarchar |
发起会话的用户的登录名。例如,如果您使用 Login1 连接到 SQL Server,再以 Login2 的身份执行语句,则 SessionLoginName 将显示 Login1,而 LoginName 将显示 Login2。此列将同时显示 SQL Server 登录名和 Windows 登录名。 |
64 |
是 |
EventSubClass |
int |
事件子类类型。 1 = 存储过程中的查询已编译。 下列 EventSubClass 类型是在存储过程的跟踪中生成的。 对于有 n 次查询的存储过程:
|
21 |
是 |
IntegerData2 |
int |
存储过程内语句的结尾。 对于存储过程的结尾,此值为 -1。 |
55 |
是 |
ObjectID |
int |
系统分配的对象 ID。 |
22 |
是 |
Offset |
int |
语句在存储过程或批查询中的起始偏移量。 |
61 |
是 |
SPID |
int |
发生该事件的会话 ID。 |
12 |
是 |
SqlHandle |
image |
SQL 句柄,可使用该句柄通过 dm_exec_sql_text 动态管理视图来获取存储过程的 SQL 文本。 |
63 |
是 |
StartTime |
datetime |
该事件(如果存在)的启动时间。 |
14 |
是 |
TextData |
ntext |
NULL |
1 |
是 |
PlanHandle |
image |
存储过程的编译计划的计划句柄。可使用该句柄通过 sys.dm_exec_query_plan 动态管理视图来获取 XML 计划。 |
65 |
是 |
ObjectType |
int |
表示事件中涉及的对象类型的值。 8272 = 存储过程 |
28 |
是 |
BigintData2 |
bigint |
在编译过程中使用的总内存 (KB)。 |
53 |
是 |
CPU |
int |
编译过程中使用的总 CPU 时间(毫秒)。 |
18 |
是 |
Duration |
int |
编译过程中所用的总时间(毫秒)。 |
13 |
是 |
IntegerData |
int |
编译计划的大小 (KB)。 |
25 |
是 |
数据列名称 |
数据类型 |
说明 |
列 ID |
可筛选 |
---|---|---|---|---|
BigintData1 |
bigint |
重新编译此计划的累积次数。 |
52 |
是 |
BinaryData |
image |
已编译计划的二进制 XML。 |
2 |
是 |
DatabaseID |
int |
由 USE database 语句指定的数据库的 ID;如果尚未对给定实例发出 USE database 语句,则为默认数据库的 ID。如果在跟踪中捕获到 ServerName 数据列并且服务器可用,则 SQL Server Profiler 将显示该数据库的名称。若要确定数据库的值,请使用 DB_ID 函数。 |
3 |
是 |
EventSequence |
int |
给定事件在请求中的顺序。 |
51 |
否 |
SessionLoginName |
nvarchar |
发起会话的用户的登录名。例如,如果您使用 Login1 连接到 SQL Server,再以 Login2 的身份执行语句,则 SessionLoginName 将显示 Login1,而 LoginName 将显示 Login2。此列将同时显示 SQL Server 登录名和 Windows 登录名。 |
64 |
是 |
EventSubClass |
int |
事件子类类型。 2 = 临时 SQL 语句中的查询已编译。 下列 EventSubClass 类型是在即席批查询的跟踪中生成的。 对于有 n 次查询的即席批查询:
|
21 |
是 |
IntegerData2 |
int |
批查询内语句的结尾。 对于批查询的结尾,此值为 -1。 |
55 |
是 |
ObjectID |
int |
不适用 |
22 |
是 |
Offset |
int |
批查询中的语句的起始偏移量。 对于批查询的开始,此值为 0。 |
61 |
是 |
SPID |
int |
发生该事件的会话 ID。 |
12 |
是 |
SqlHandle |
image |
SQL 句柄。可使用该句柄通过 dm_exec_sql_text 动态管理视图来获取批查询 SQL 文本。 |
63 |
是 |
StartTime |
datetime |
该事件(如果存在)的启动时间。 |
14 |
是 |
TextData |
ntext |
NULL |
1 |
是 |
PlanHandle |
image |
批查询的编译计划的计划句柄。可使用该句柄通过 dm_exec_query_plan 动态管理视图来获取批查询 XML 计划。 |
65 |
是 |
BigintData2 |
bigint |
在编译过程中使用的总内存 (KB)。 |
53 |
是 |
CPU |
int |
编译过程中所用的总 CPU 时间(毫秒)。 |
18 |
是 |
Duration |
int |
编译过程中所用的总时间(毫秒)。 |
13 |
是 |
IntegerData |
int |
编译计划的大小 (KB)。 |
25 |
是 |
数据列名称 |
数据类型 |
说明 |
列 ID |
可筛选 |
---|---|---|---|---|
BigintData1 |
bigint |
重新编译此计划的累积次数。 |
52 |
是 |
BinaryData |
image |
NULL |
2 |
是 |
DatabaseID |
int |
由 USE database 语句指定的数据库的 ID;如果尚未对给定实例发出 USE database 语句,则为默认数据库的 ID。如果在跟踪中捕获到 ServerName 数据列并且服务器可用,则 SQL Server Profiler 将显示该数据库的名称。若要确定数据库的值,请使用 DB_ID 函数。 |
3 |
是 |
EventSequence |
int |
给定事件在请求中的顺序。 |
51 |
否 |
SessionLoginName |
nvarchar |
发起会话的用户的登录名。例如,如果您使用 Login1 连接到 SQL Server,再以 Login2 的身份执行语句,则 SessionLoginName 将显示 Login1,而 LoginName 将显示 Login2。此列将同时显示 SQL Server 登录名和 Windows 登录名。 |
64 |
是 |
EventSubClass |
int |
事件子类类型。 3 = 保存在缓存中的某一查询已被破坏,与此计划相关的历史性能数据也将被破坏。 下列 EventSubClass 类型是在跟踪中生成的。 对于有 n 次查询的即席批查询:
对于有 n 次查询的存储过程:
|
21 |
是 |
IntegerData2 |
int |
存储过程内或批处理内的语句结束。 对于存储过程或批处理的结尾,此值为 -1。 |
55 |
是 |
ObjectID |
int |
NULL |
22 |
是 |
Offset |
int |
语句在存储过程或批查询中的起始偏移量。 对于存储过程或批查询的开始,此值为 0。 |
61 |
是 |
SPID |
int |
发生该事件的会话 ID。 |
12 |
是 |
SqlHandle |
image |
SQL 句柄,可使用该句柄通过 dm_exec_sql_text 动态管理视图来获取存储过程或批查询 SQL 文本。 |
63 |
是 |
StartTime |
datetime |
该事件(如果存在)的启动时间。 |
14 |
是 |
TextData |
ntext |
QueryExecutionStats |
1 |
是 |
PlanHandle |
image |
存储过程或批查询的编译计划的计划句柄。可使用该句柄通过 dm_exec_query_plan 动态管理视图来获取 XML 计划。 |
65 |
是 |
GroupID |
int |
触发 SQL 跟踪事件的工作负荷组的 ID。 |
66 |
是 |
数据列名称 |
数据类型 |
说明 |
列 ID |
可筛选 |
---|---|---|---|---|
BigintData1 |
bigint |
NULL |
52 |
是 |
BinaryData |
image |
NULL |
2 |
是 |
DatabaseID |
int |
给定存储过程所在的数据库的 ID。 |
3 |
是 |
EventSequence |
int |
给定事件在请求中的顺序。 |
51 |
否 |
SessionLoginName |
nvarchar |
发起会话的用户的登录名。例如,如果您使用 Login1 连接到 SQL Server,再以 Login2 的身份执行语句,则 SessionLoginName 将显示 Login1,而 LoginName 将显示 Login2。此列将同时显示 SQL Server 登录名和 Windows 登录名。 |
64 |
是 |
EventSubClass |
int |
事件子类类型。 4 = 缓存的存储过程已从缓存中删除,与它关联的历史性能数据也即将销毁。 |
21 |
是 |
IntegerData2 |
int |
NULL |
55 |
是 |
ObjectID |
int |
存储过程的 ID。与 sys.procedures 中的 object_id 列相同。 |
22 |
是 |
Offset |
int |
NULL |
61 |
是 |
SPID |
int |
发生该事件的会话 ID。 |
12 |
是 |
SqlHandle |
image |
SQL 句柄,可使用该句柄通过 dm_exec_sql_text 动态管理视图来获取所执行的存储过程 SQL 文本。 |
63 |
是 |
StartTime |
datetime |
该事件(如果存在)的启动时间。 |
14 |
是 |
TextData |
ntext |
ProcedureExecutionStats |
1 |
是 |
PlanHandle |
image |
存储过程的编译计划的计划句柄。可使用该句柄通过 dm_exec_query_plan 动态管理视图来获取 XML 计划。 |
65 |
是 |
GroupID |
int |
触发 SQL 跟踪事件的工作负荷组的 ID。 |
66 |
是 |
数据列名称 |
数据类型 |
说明 |
列 ID |
可筛选 |
---|---|---|---|---|
BigintData1 |
bigint |
NULL |
52 |
是 |
BinaryData |
image |
NULL |
2 |
是 |
DatabaseID |
int |
给定触发器所在的数据库的 ID。 |
3 |
是 |
EventSequence |
int |
给定事件在请求中的顺序。 |
51 |
否 |
SessionLoginName |
nvarchar |
发起会话的用户的登录名。例如,如果您使用 Login1 连接到 SQL Server,再以 Login2 的身份执行语句,则 SessionLoginName 将显示 Login1,而 LoginName 将显示 Login2。此列将同时显示 SQL Server 登录名和 Windows 登录名。 |
64 |
是 |
EventSubClass |
int |
事件子类类型。 5 = 缓存的触发器已从缓存中删除,与它关联的历史性能数据也即将销毁。 |
21 |
是 |
IntegerData2 |
int |
NULL |
55 |
是 |
ObjectID |
int |
触发器的 ID。与 sys.triggers/sys.server_triggers 目录视图中的 object_id 列相同。 |
22 |
是 |
Offset |
int |
NULL |
61 |
是 |
SPID |
int |
发生该事件的会话 ID。 |
12 |
是 |
SqlHandle |
image |
SQL 句柄,可使用该句柄通过 dm_exec_sql_text 动态管理视图来获取触发器的 SQL 文本。 |
63 |
是 |
StartTime |
datetime |
该事件(如果存在)的启动时间。 |
14 |
是 |
TextData |
ntext |
TriggerExecutionStats |
1 |
是 |
PlanHandle |
image |
触发器的编译计划的计划句柄。可使用该句柄通过 dm_exec_query_plan 动态管理视图来获取 XML 计划。 |
65 |
是 |
GroupID |
int |
触发 SQL 跟踪事件的工作负荷组的 ID。 |
66 |
是 |