--SQL Server 扩展事件具有高度可伸缩且高度可配置的体系结构,
--使用户能够按需收集解决性能问题或确定性能问题所需的信息。
--1. 性能损耗小
--2. 可配置性高
--3. 可捕获底层事件
 
--=====================================================
--SQL Server 扩展事件包
--包是用于SQL Server 扩展事件对象的容器。
--扩展事件包有三种类型
----package0 - 扩展事件系统对象。这是默认包。
----sqlserver - SQL Server 相关对象。
----sqlos - SQL Server 操作系统(SQLOS) 相关对象。
--查看扩展事件包
SELECT * FROM sys.dm_xe_packages P
 
--每个事件包包括:事件,目标,操作,类型,谓词,映射
 
 
--通道
--通道用于标识事件的用户
 
--关键字
--关键字是特定于应用程序的,并且使得对相关事件的分组更加细化,
--这样您能更容易地指定和检索要在会话中使用的事件
--获取关键字信息
select map_value Keyword from sys.dm_xe_map_values
where name = 'keyword_map'
 
--目标
--目标是指事件使用者。目标在触发事件的线程中同步处理事件
--或在系统提供的线程中异步处理事件。通常,在必须保持特定
--数据排序时将使用同步处理。扩展事件提供了多个目标,您可
--以根据需要将其用于定向事件输出
 
--操作
--操作是对事件做出的一个编程方式的响应或一系列响应。
--操作与事件绑定在一起,并且每个事件都可能具有唯一的一组操作。
 
--谓词
--谓词是一组逻辑规则,用于在处理事件时计算这些事件。
--这可以使扩展事件用户根据特定条件有选择地捕获事件数据。
 
--类型
--由于数据是排列在一起的字节集合,因此需要使用字节集合的长度和特征来解释这些数据
SELECT
DISTINCT OB.object_type
FROM sys.dm_xe_objects OB
 
--映射
--映射表用于将内部值映射到字符串,这使用户可以知道该值代表什么。
--用户可以获得关于内部值真正含义的说明,而不是只能够获取数值。
SELECT map_key, map_value
FROM sys.dm_xe_map_values
 
--查看扩展事件
SELECT xp.[name] AS [Package_Name], xo.*
FROM sys.dm_xe_objects xo
INNER JOIN sys.dm_xe_packages xp
ON xp.[guid] = xo.[package_guid] 
WHERE xo.[object_type] = 'action'
ORDER BY xp.[name];
 
--查看某个扩展对象的列
SELECT *
FROM sys.dm_xe_object_columns
 
--============================================
 
--会话会话是一种将多个扩展事件对象链接到
--一起进行处理的方法—事件包含动作,将被目标所消耗。
--会话可链接任何注册的数据包中的对象,任何数量的会话
--都可以使用同一个事件、动作等。
--查看会话
SELECT * FROM sys.dm_xe_sessions;
Go
 
--在性能考虑方面涉及到
--1.那些事件需要被监控,这些事件的触发频率
--2.如何消耗事件,使用异步还是同步
--3.如果处理事件丢失(如果没有足够的内存来缓冲某个事件,是否可将其直接丢弃或强制其不丢失)
 
--事件的周期
 
--1.执行检查以查看是否有任何扩展事件会话正在监控该事件。如果没有,控制权将返给包含该事件的代码,然后继续进行处理。
--2.确定事件的负载,将所需的全部信息都收集到内存中—换言之,构建事件的负载。
--3.如果为该事件定义了任何谓词,则执行它们。此时,谓词结果可能是不应消耗该事件。如果是这种情况,控制权将返给包含该事件的代码,然后继续进行处理。
--4.此时系统已得知事件将被消耗,因此将执行链接到该事件的所有动作。现在事件已具有完整的负载,已为消耗做好准备。
--5.将事件提供给同步目标(如果有的话)。
--6.如果存在任何异步目标,将会缓冲该事件以便随后进行处理。
--7.控制权将返给包含该事件的代码,然后继续进行处理。

XEvent--基础-LMLPHP

05-28 20:25