一、体系架构
XE系统的主体位于SQL Server的总体层中,因此它能与各级SQL Server主机进程进行交互。XE的架构如下图:
二、包
包是一种基本单位(对象的容器),SQL Server 扩展事件的对象都是通过包发布的。SQL Server 2008发行的包共有4个,可以通过以下DMV查询:SELECT * FROM sys.dm_xe_packages
这4种类型扩展事件包是:
(1)package0:扩展事件系统的所有标准对象。它包含了其他扩展事件包需要使用的对象。这是默认包。
(2)sqlserver:SQL Server 相关对象。包含特定于其余SQL Server系统的对象。在DMV查询时可见它的capabilities=256,即utility。
(3)sqlos:SQL Server 操作系统 (SQLOS) 相关对象。 旨在帮助用户与SQL系统进行交互。
(4)SecAudit:安全审核事件。这是特殊的包,它包含的对象供SQL Audit使用(SQL Audit是构建在扩展事件之上的一种审核技术)。在DMV查询时可见它的capabilities=1,即private,意味着只有系统用户才可以使用它的包含的对象。
每个包都是事件、操作、类型、映射、目标和谓词的集合。可以通过以下DMV查看所有的扩展事件包所包含的对象。
1、事件
事件是程序(例如SQL Server)的执行路径中的相关监视点。事件触发即表明已经到达相关点,并具有自事件触发以来的状态信息。
事件可仅用于跟踪目的或用于触发操作。这些操作可以是同步的,也可以是异步的。
2、操作
操作是对事件做出的一个编程方式的响应或一系列响应。操作与事件绑定在一起,并且每个事件都可能具有唯一的一组操作。
3、类型
由于数据是排列在一起的字节集合,因此需要使用字节集合的长度和特征来解释这些数据。该信息将封装在 Type 对象中。
4、映射
映射表用于将内部值映射到字符串,这使用户可以知道该值代表什么。用户可以获得关于内部值真正含义的说明,而不是只能够获取数值。
5、目标
目标是指事件使用者。目标在触发事件的线程中同步处理事件或在系统提供的线程中异步处理事件。扩展事件提供了多个目标,您可以根据需要将其用于定向事件输出。
6、谓词
谓词是一组逻辑规则,用于在处理事件时计算这些事件。这可以使扩展事件用户根据特定条件有选择地捕获事件数据。
谓词可在本地上下文中存储用于创建谓词的数据,这些谓词每 n 分钟或每当事件触发 n 次时返回一次 true。本地上下文存储也可用于动态更新谓词,从而在事件包含类似数据时取消未来的事件触发。
谓词能够检索上下文信息,例如线程 ID 以及事件的特定数据。谓词的计算结果为完整的布尔表达式,并且它支持在整个表达式为 false 的第一个点处执行短路。
二、扩展事件会话
构成扩展事件体系结构的每个元素,在运行时汇集成一个整体单元就形成了扩展事件会话。会话用于说明用户需要收集的事件;谓词用于解决应该筛选哪些事件;需要激活的操作与事件一些协同工作;最后,目标在循环的结尾用于数据收集。
如果有足够的权限,可以创建多个会话。大多数的会话相互独立。