设为首页 收藏本站
查看: 695|回复: 0

[经验分享] SQL Server扩展事件(Extended Events)-- 扩展事件概念解析

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-1-6 08:25:49 | 显示全部楼层 |阅读模式
下图描述了扩展事件中引入的几个新概念:

wKioL1SqWArD6UviAADRYipqMIk116.jpg

事件
事件是指代码中定义的点。此类示例包括:T-SQL 语句完成执行时的点或结束获取锁定时的点。每个事件都有一个定义的负载(该事件返回的列的集合),它是使用 ETW 模型(其中每个事件都返回一个通道和关键字作为负载的一部分)来定义的,以便能够与 ETW 集成。SQL Server 2008 最初提供 254 个定义的事件,预计在今后还会增加。

使用下列代码可以查看这些定义事件的列表:

1
2
3
4
5
SELECT xp.[name], xo.*
FROM sys.dm_xe_objects xo, sys.dm_xe_packages xp
WHERE xp.[guid] = xo.[package_guid]
AND xo.[object_type] = 'event'
ORDER BY xp.[name];




使用下列代码可以查找某个特定事件的负载:

1
2
3
SELECT * FROM sys.dm_xe_object_columns
WHERE [object_name] = 'sql_statement_completed';
GO




谓词
谓词是指在事件消耗前利用一组逻辑规则来筛选事件的方法。谓词可以很简单,如检查事件负载中的其中一个返回列是否为某个特定值(例如,通过对象 ID 来筛选“锁定-获得”事件)。
它们还具有一些高级功能,如统计会话期间某个特定事件发生的次数、仅允许事件在发生一次后消耗,或者动态更新谓词本身以抑制包含类似数据的事件的消耗。

谓词可以使用布尔逻辑来编写,以使其能够尽可能走捷径。这使得只需执行最少数量的同步处理即可确定是否需要消耗事件。

动作
动作是指在消耗某个事件前同步执行的一组命令。任何动作都可以被链接到任何事件。它们通常会收集大量数据并追加到事件负载中(如 T-SQL 堆栈或查询执行计划)或执行某个被追加到事件负载中的计算。

由于执行这些动作可能需要极高的代价,因此事件的动作仅在所有谓词都计算完毕后才执行,如果在随后确定该事件不会被消耗,则将不会有同步执行某个动作的点。使用下列代码可找到预定义动作的列表:

1
2
3
4
5
SELECT xp.[name], xo.*
FROM sys.dm_xe_objects xo, sys.dm_xe_packages xp
WHERE xp.[guid] = xo.[package_guid]
AND xo.[object_type] = 'action'
ORDER BY xp.[name];




目标
目标只提供一种消耗事件的方法,任何目标都可以消耗任何事件(或至少可以在目标空闲时对事件进行处理 — 如获取非审计事件的审计目标)。目标可以同步(例如,触发事件的代码等待该事件被消耗)或异步消耗事件。

目标的范围从简单的使用者(如事件文件和环缓冲区)直到能够执行事件配对操作的复杂使用者。使用下列代码可以找到可用目标的列表:

1
2
3
4
5
SELECT xp.[name], xo.*
FROM sys.dm_xe_objects xo, sys.dm_xe_packages xp
WHERE xp.[guid] = xo.[package_guid]
AND xo.[object_type] = 'target'
ORDER BY xp.[name];




数据包
数据包是一个用于定义扩展事件对象(如事件、动作和目标)的容器。数据包位于它所描述的模块(如可执行程序或 DLL)中。

使用扩展事件引擎注册数据包时,它所定义的全部对象都可供使用。

会话
会话是一种将多个扩展事件对象链接到一起进行处理的方法 -- 事件包含动作,将被目标所消耗。会话可链接任何注册的数据包中的对象,任何数量的会话都可以使用同一个事件、动作等。使用下列代码可查看已定义了哪些扩展事件会话:

1
2
SELECT * FROM sys.dm_xe_sessions;
Go




可使用 T-SQL 命令来创建、删除、更改、停止和启动会话。可以想见,这将提供很多灵活性,甚至提供通过对会话本身所捕获的数据进行程序化分析来动态更改会话的功能。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-40257-1-1.html 上篇帖子: ERROR [42000] 下篇帖子: SQL Server扩展事件(Extended Events)-- 扩展事件概念解析
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表