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

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介:

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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




















本文转自UltraSQL51CTO博客,原文链接:http://blog.51cto.com/ultrasql/1599381 ,如需转载请自行联系原作者






相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
2月前
|
SQL 存储 关系型数据库
如何巧用索引优化SQL语句性能?
本文从索引角度探讨了如何优化MySQL中的SQL语句性能。首先介绍了如何通过查看执行时间和执行计划定位慢SQL,并详细解析了EXPLAIN命令的各个字段含义。接着讲解了索引优化的关键点,包括聚簇索引、索引覆盖、联合索引及最左前缀原则等。最后,通过具体示例展示了索引如何提升查询速度,并提供了三层B+树的存储容量计算方法。通过这些技巧,可以帮助开发者有效提升数据库查询效率。
151 2
|
16天前
|
SQL 开发框架 .NET
突破T-SQL限制:利用CLR集成扩展RDS SQL Server的功能边界
CLR集成为SQL Server提供了强大的扩展能力,突破了T-SQL的限制,极大地拓展了SQL 的应用场景,如:复杂字符串处理、高性能计算、图像处理、机器学习集成、自定义加密解密等,使开发人员能够利用 .NET Framework的丰富功能来处理复杂的数据库任务。
|
1月前
|
SQL 存储 缓存
如何优化SQL查询性能?
【10月更文挑战第28天】如何优化SQL查询性能?
93 10
|
1月前
|
SQL 关系型数据库 MySQL
惊呆:where 1=1 可能严重影响性能,差了10多倍,快去排查你的 sql
老架构师尼恩在读者交流群中分享了关于MySQL中“where 1=1”条件的性能影响及其解决方案。该条件在动态SQL中常用,但可能在无真实条件时导致全表扫描,严重影响性能。尼恩建议通过其他条件或SQL子句命中索引,或使用MyBatis的`<where>`标签来避免性能问题。他还提供了详细的执行计划分析和优化建议,帮助大家在面试中展示深厚的技术功底,赢得面试官的青睐。更多内容可参考《尼恩Java面试宝典PDF》。
|
2月前
|
SQL 监控 数据库
慢SQL对数据库写入性能的影响及优化技巧
在数据库管理系统中,慢SQL(即执行缓慢的SQL语句)不仅会影响查询性能,还可能对数据库的写入性能产生显著的不利影响
|
2月前
|
SQL 存储 数据可视化
SQL中文字符旋转90度的处理:技巧、方法与注意事项
在SQL数据库中,直接对文本数据进行90度旋转并不是数据库系统的原生功能
|
2月前
|
SQL 关系型数据库 PostgreSQL
遇到SQL 子查询性能很差?其实可以这样优化
遇到SQL 子查询性能很差?其实可以这样优化
101 2
|
2月前
|
SQL Oracle 关系型数据库
Oracle SQL:了解执行计划和性能调优
Oracle SQL:了解执行计划和性能调优
63 1
|
2月前
|
SQL 存储 数据库
慢SQL对数据库写入性能的影响及优化技巧
在数据库管理系统中,慢SQL(即执行缓慢的SQL语句)不仅会影响查询性能,还可能对数据库的写入性能产生显著的不利影响
|
2月前
|
SQL 数据处理 数据库
SQL语句优化与查询结果优化:提升数据库性能的实战技巧
在数据库管理和应用中,SQL语句的编写和查询结果的优化是提升数据库性能的关键环节