SQL Server扩展事件(Extended Events)-- 性能注意事项

SQL Server扩展事件(Extended Events)-- 性能注意事项

使用 CREATE EVENT SESSION 将扩展事件会话放置在一起时,需要认真正确配置一些设置,因为它们可能会在无意中对性能产生影响。首先需要决定是以同步还是异步方式消耗事件。正如您所料,同步目标对所监控代码的性能产生的影响要大过异步目标。

如前所述,同步消耗某个事件时,触发该事件的代码必须一直等待,直到该事件被消耗为止。显然,如果事件消耗是一个复杂的过程,则这可能会降低代码的性能。

例如,在一个每秒处理数千个小事务的繁忙系统中,同步消耗 sql_statement_completed 事件及捕获查询计划动作很可能会对性能产生负面影响。另外还要记住,谓词始终是同步执行的,因此应注意不要为性能关键代码触发的事件创建过于复杂的谓词。

另一方面,您可能会被强制同步消耗事件。要计算某个特定事件的出现次数,最简单的方法很可能是使用 synchronous_event_counter 目标。

您必须考虑的第二件事情是如果决定使用异步目标,那么该如何配置事件缓冲。事件缓冲的默认可用内存数为 4MB。事件被触发,随后被目标消耗,期间的默认调度延迟为 30 秒。这意味着如果您希望每 10 秒生成一些事件统计数据,则必须对延迟时间进行调整。

对用于缓冲事件的内存进行分区的方法是将其绑定到事件缓冲设置。默认情况下是为整个实例创建一组缓冲区。在 SMP(对称多处理器)和 NUMA(非统一内存访问)计算机中,这可能会使处理器不得不等待访问内存,从而导致出现性能问题。

第三个注意事项是如何处理事件丢失。在定义扩展事件会话时,可指定事件是否可以“丢失”。这意味着如果没有足够的内存来缓冲某个事件,则可将其直接丢弃。默认设置是允许丢弃单个事件,但也可以允许整个事件缓冲区都丢失(适用于事件缓冲区很快就被填满的会话),甚至还可以指定任何事件都不得丢失。

使用最后一个选项时应格外注意,因为它会强制触发事件的代码一直等待,直到有足够的缓冲区内存来存储该事件为止。设置此选项几乎肯定会对性能产生不利影响。请注意,如果无意间启用了此选项,服务器仍会拥有足够的响应能力让您能够禁用此设置。

通常,您需要通盘考虑这些选项。实际上我并没有办法为您提供通用的最佳方法,我能做的只是向您强调深入领会它们,否则您可能会遇到性能问题。

时间: 2024-10-10 08:12:37

SQL Server扩展事件(Extended Events)-- 性能注意事项的相关文章

SQL Server扩展事件(Extended Events)-- 使用扩展事件跟踪监控死锁

SQL Server扩展事件(Extended Events)-- 使用扩展事件跟踪监控死锁 我们通过SQL Server 2012图形界面来部署一个扩展事件跟踪会话.然后可以生成SQL脚本,在2008或2008 R2版本下运行类似的跟踪. 步骤1: 通过"Object Explorer"连接到实例,展开"Management"."Extended Events"."Sessions". 步骤2: 右键点击"Sess

SQL Server扩展事件(Extended Events)-- 事件的寿命

SQL Server扩展事件(Extended Events)-- 事件的寿命 定义并启动扩展事件会话后,处理过程将照常进行,直到所监控的代码遇到某个事件为止.下图介绍了扩展事件系统所遵循的步骤. 具体步骤如下: 1. 执行检查以查看是否有任何扩展事件会话正在监控该事件.如果没有,控制权将返给包含该事件的代码,然后继续进行处理. 2. 确定事件的负载,将所需的全部信息都收集到内存中 - 换言之,构建事件的负载. 3. 如果为该事件定义了任何谓词,则执行它们.此时,谓词结果可能是不应消耗该事件.如

SQL Server扩展事件(Extended Events)—使用system_health扩展事件会话

SQL Server扩展事件(Extended Events)-使用system_health扩展事件会话 system_health 会话是 SQL Server 默认包含的扩展事件会话. 该会话在 SQL Server 数据库引擎启动时自动启动,并且运行时不会对性能造成任何明显影响. 该会话收集的系统数据可用于帮助对数据库引擎的性能问题进行故障排除. 因此,我们建议您不要停止或删除该会话. 此会话源自产品支持团队的想法,它可以跟踪通常被用来对客户系统进行调试的信息(例如当客户系统发生死锁或出

SQL Server扩展事件(Extended Events)-- 体系结构

SQL Server扩展事件(Extended Events)-- 体系结构 MSDN:http://msdn.microsoft.com/zh-cn/library/bb630282%28v=sql.110%29.aspx BLOG:http://blogs.msdn.com/b/extended_events/ SQL Server 扩展事件具有高度可伸缩且高度可配置的体系结构,使用户能够按需收集解决性能问题或确定性能问题所需的信息.扩展事件是使用非常少的性能资源的轻型性能监视系统. 扩展事

SQL Server扩展事件(Extended Events)-- 使用扩展事件跟踪查询语句

SQL Server扩展事件(Extended Events)-- 使用扩展事件跟踪查询语句 创建扩展事件会话 展开"Object Explorer"."Management"."Extended Events"."Sessions"目录,你会发现一到两个预设的会话.默认,在SQL Server 2012包含system_health会话,而根据不同的SQL Server2012的版本,可能有AlwaysOn_health会话

SQL Server扩展事件(Extended Events)-- 扩展事件概念解析

SQL Server扩展事件(Extended Events)-- 扩展事件概念解析 下图描述了扩展事件中引入的几个新概念: 事件 事件是指代码中定义的点.此类示例包括:T-SQL 语句完成执行时的点或结束获取锁定时的点.每个事件都有一个定义的负载(该事件返回的列的集合),它是使用 ETW 模型(其中每个事件都返回一个通道和关键字作为负载的一部分)来定义的,以便能够与 ETW 集成.SQL Server 2008 最初提供 254 个定义的事件,预计在今后还会增加. 使用下列代码可以查看这些定义

SQL Server扩展事件(Extended Events)-- 使用system_health默认跟踪会话监控死锁

SQL Server扩展事件(Extended Events)-- 使用system_health默认跟踪会话监控死锁 自SQL Server 2008以后,提供了扩展事件(Extended Events)来跟踪系统分析定位问题.默认的system_health会话一直在运行,可以帮助你更快的定位问题. 运行如下脚本可以看到system_health扩展事件会话: SELECT * FROM sys.dm_xe_sessions 即便是你没有启动任何扩展事件会话,这个查询也会返回一行system

SQL Server扩展事件(Extended Events)-- 使用扩展事件跟踪监控死锁脚本实现

SQL Server扩展事件(Extended Events)-- 使用扩展事件跟踪监控死锁脚本实现 -- Create a new event session (it is better to create a new session and not modify the system's built-in session "system_health"): CREATE EVENT SESSION [Deadlock_Monitor] ON SERVER ADD EVENT sql

SQL Server 扩展事件(Extented Events)从入门到进阶(4)——扩展事件引擎——基本概念

本文属于 SQL Server 扩展事件(Extented Events)从入门到进阶 系列 在第一二节中,我们创建了一些简单的.类似典型SQL Trace的扩展事件会话.在此过程中,介绍了很多扩展事件基础组件,包括事件.谓词.操作和目标.本节,将对扩展事件引擎.架构和基本组件做更加深入的了解.通过这些讲解,可以大概了解到为什么扩展事件相对于SQL Trace来说更加低开销.另外,还会延时如何设计事件会话从而最小化事件收集过程中的不必要开销,即使这些事件会话会很复杂. 事件数据收集生命周期: 扩