SQL Server 扩展事件具有高度可缩放且高度可配置的体系结构,允许用户收集尽可能多的信息或尽可能少的信息来排查或识别性能问题。
可以在 SQL Server 扩展事件中找到有关 Web 上的扩展事件的详细信息。
SQL Server 扩展事件的优点
扩展事件是一种轻型性能监视系统,它使用很少的性能资源。 扩展事件提供两个图形用户界面(新建会话向导 和新 会话),用于创建、修改、显示和分析会话数据。
扩展事件概念
SQL Server 扩展事件(扩展事件)基于现有概念(如事件或事件使用者)使用 Windows 事件跟踪的概念,并引入了新概念。
下表介绍了扩展事件中的概念。
| 主题 | DESCRIPTION |
|---|---|
| SQL Server 扩展事件包 | 介绍扩展事件包,其中包含在运行扩展事件会话时用于获取和处理数据的对象。 |
| SQL Server 扩展事件目标 | 描述可以在事件会话期间接收数据的事件使用者。 |
| SQL Server 扩展事件引擎 | 描述实现和管理扩展事件会话的引擎。 |
| SQL Server 扩展事件会话 | 描述扩展事件会话。 |
扩展事件体系结构
扩展事件(扩展事件)是服务器系统的常规事件处理系统。 扩展事件基础结构支持 SQL Server 的数据关联,在某些条件下,还支持操作系统和数据库应用程序中的数据关联。 在后一种情况下,必须将扩展事件输出定向到 Windows 事件跟踪(ETW),以便将事件数据与作系统或应用程序事件数据相关联。
所有应用程序都具有在应用程序内外都有用的执行点。 在应用程序中,可以使用在任务初始执行期间收集的信息排队异步处理。 在应用程序外部,执行点为监视实用工具提供有关受监视应用程序的行为和性能特征的信息。
扩展事件支持在进程外部使用事件数据。 此数据通常用于:
跟踪工具,如 SQL 跟踪和系统监视器。
日志记录工具,例如 Windows 事件日志或 SQL Server 错误日志。
管理产品或开发产品上的应用程序的用户。
扩展事件具有以下关键设计要点:
扩展事件引擎对事件不依赖。 这使引擎能够将任何事件绑定到任何目标,因为引擎不受事件内容的约束。 有关扩展事件引擎的详细信息,请参阅 SQL Server 扩展事件引擎。
事件与事件使用者分离,这些事件在扩展事件中称为 目标 。 这意味着任何对象都可以接收任何事件。 此外,任何被引发的事件都可以被目标系统自动处理,这些事件可以被记录或者提供额外的事件上下文。 有关详细信息,请参阅 SQL Server 扩展事件目标。
事件不同于事件发生时要执行的动作。 因此,任何动作都可以与任何事件相关联。
谓词可以动态筛选何时应捕获事件数据。 这增加了扩展事件基础结构的灵活性。 有关详细信息,请参阅 SQL Server 扩展事件包。
扩展事件可以同步生成事件数据(并异步处理该数据),该数据为事件处理提供了灵活的解决方案。 此外,扩展事件还提供以下功能:
一种统一的方法,用于跨服务器系统处理事件,同时使用户能够隔离特定事件以进行故障排除。
与现有 ETW 工具集成和支持。
基于 Transact-SQL 的完全可配置事件处理机制。
动态监视活动进程的能力,同时对这些进程的影响最小。
默认系统运行状况会话在不对性能产生任何明显影响的情况下运行。 会话收集可用于帮助排查性能问题的系统数据。 有关详细信息,请参阅 使用 system_health 会话。
扩展事件任务
使用 Management Studio 或 Transact-SQL 为 SQL Server 环境创建简单或复杂的 SQL Server 扩展事件故障排除解决方案,以执行 Transact-SQL 数据定义语言(DDL)语句、动态管理视图和函数或目录视图。
| 任务说明 | 主题 |
|---|---|
| 使用 对象资源管理器 管理事件会话。 | 在对象资源管理器中管理事件会话 |
| 介绍如何创建扩展事件会话。 | 创建扩展事件会话 |
| 介绍如何查看和刷新目标数据。 | 查看事件会话数据 |
| 介绍如何使用扩展事件工具创建和管理 SQL Server 扩展事件会话。 | 扩展事件工具 |
| 介绍如何更改扩展事件会话。 | 更改扩展事件会话 |
| 介绍如何复制或导出目标数据。 | 复制或导出目标数据 |
| 介绍如何修改跟踪结果视图以自定义要如何分析数据。 | 修改跟踪结果视图 |
| 介绍如何获取与事件关联的字段的相关信息。 | 获取所有事件的字段 |
| 介绍如何查找已注册包中有哪些可用的事件。 | 查看已注册包的事件 |
| 介绍如何确定已注册包中可用的扩展事件目标。 | 查看已注册包的扩展事件目标 |
| 介绍如何查看与每个 SQL 跟踪事件及其关联列等效的扩展事件和操作。 | 查看与 SQL 跟踪事件类等效的扩展事件 |
| 介绍如何在 CREATE EVENT SESSION 或 ALTER EVENT SESSION 中使用 ADD TARGET 参数时查找可以设置的参数。 | 获取 ADD TARGET 参数的可配置参数 |
| 介绍如何将现有 SQL 跟踪脚本转换为扩展事件会话。 | 将现有 SQL 跟踪脚本转换为扩展事件会话 |
| 介绍如何确定哪些查询持有锁、查询计划以及锁定时 Transact-SQL 堆栈。 | 确定哪些查询持有锁 |
| 介绍如何识别阻碍数据库性能的锁源。 | 查找具有最多锁的对象 |
| 介绍如何将扩展事件与 Windows 事件跟踪配合使用来监视系统活动。 | 使用扩展事件监视系统活动 |
另请参阅
数据层应用程序
对 SQL Server 对象和版本的 DAC 支持
部署数据层应用程序
监视数据层应用程序
扩展事件动态管理视图
[扩展事件目录视图(Transact-SQL)](~/relational-databases/system-catalog-views/extended-events-catalog-views-transact-sql