如何监控和解决SQL Server的阻塞(3) (扩展事件)
来源:互联网 发布:复旦在职研究生 知乎 编辑:程序博客网 时间:2024/05/17 14:25
- 如何监控和解决SQL Server的阻塞(1) 点击打开链接
- 如何监控和解决SQL Server的阻塞(2)(事件通知)点击打开链接
SQL 2008 R2 以后引入了扩展事件(Extended Event),通过扩展事件可以监控Blocking. 对比SQL Profiler, 扩展事件监控是轻量级的.较少的开销cpu. SQL 2008 R2 你可以通过脚本设置扩展事件。 SQL 2012以后,你可以通过GUI界面设置。 这里我们利用脚本设置来了解扩展事件的内部语义。
如果你需要在SQL 2008 SSMS里象SQL2012一样使用GUI Extended Event,请下载如下插件
SQL Server 2008 Extended Event SSMS插件: 点击打开链接
1. 设置扩展事件Session,收集Blocking信息
CREATE EVENT SESSION BlockingTransactions ON SERVERADD EVENT sqlserver. locks_lock_timeouts (ACTION (sqlserver.sql_text, sqlserver.tsql_stack)),ADD EVENT sqlserver. locks_lock_waits (ACTION (sqlserver.sql_text, sqlserver.tsql_stack))ADD TARGET package0.ring_bufferWITH (MAX_DISPATCH_LATENCY = 30 SECONDS);GOALTER EVENT SESSION BlockingTransactions ON SERVER STATE = START;GO
2. 当blocking发生时, 查询扩展事件
WITH BlockingTransactionsAS (SELECT CAST(target_data AS xml) AS SessionXMLFROM sys.dm_xe_session_targets stINNER JOIN sys.dm_xe_sessions s ON s.address = st.event_session_addressWHERE name = 'BlockingTransactions')SELECTblock.value('@timestamp', 'datetime') AS event_timestamp,block.value('@name', 'nvarchar(128)') AS event_name,block.value('(data/value)[1]', 'nvarchar(128)') AS event_count,block.value('(data/value)[1]', 'nvarchar(128)') AS increment,mv.map_value AS lock_type,block.value('(action/value)[1]', 'nvarchar(max)') AS sql_text,block.value('(action/value)[2]', 'nvarchar(255)') AS tsql_stackFROM BlockingTransactions bCROSS APPLY SessionXML.nodes ('//RingBufferTarget/event') AS t(block)INNER JOIN sys.dm_xe_map_values mv ON block.value('(data/value)[3]', 'nvarchar(128)') = mv.map_key AND name = 'lock_mode'WHERE block.value('@name', 'nvarchar(128)') = 'locks_lock_waits'UNION ALLSELECTblock.value('@timestamp', 'datetime') AS event_timestamp,block.value('@name', 'nvarchar(128)') AS event_name,block.value('(data/value)[1]', 'nvarchar(128)') AS event_count,NULL,mv.map_value AS lock_type,block.value('(action/value)[1]', 'nvarchar(max)') AS sql_text,block.value('(action/value)[2]', 'nvarchar(255)') AS tsql_stackFROM BlockingTransactions bCROSS APPLY SessionXML.nodes ('//RingBufferTarget/event') AS t(block)INNER JOIN sys.dm_xe_map_values mv ON block.value('(data/value)[2]', 'nvarchar(128)') = mv.map_key AND name = 'lock_mode'WHERE block.value('@name', 'nvarchar(128)') = 'locks_lock_timeouts';
查询如图:
0 0
- 如何监控和解决SQL Server的阻塞(3) (扩展事件)
- 三,如何监控和解决SQL Server的阻塞(3) (扩展事件)
- 如何监控和解决SQL Server的阻塞(2)(事件通知)
- 二,如何监控和解决SQL Server的阻塞(2)(事件通知)
- 如何监控和解决SQL Server的阻塞(1) (当前阻塞)
- 一,如何监控和解决SQL Server的阻塞(1) (当前阻塞)
- SQL Server 2005/2008 锁和阻塞的监控
- SQL Server 的锁定和阻塞
- SQL Server 监控统计阻塞脚本信息
- SQL Server 监控统计阻塞脚本信息
- 了解和解决SQL Server 7.0 或2000 阻塞问题
- 如何检查SQL Server阻塞
- 转帖(如何监控sql server 死锁)
- 如何应用Sql Server的扩展属性
- 如何监控sql server 死锁
- SQL Server进程阻塞的检查和解决办法
- SQL Server进程阻塞的检查和解决办法
- 搞懂 SQL Server 的锁定和阻塞
- 匿名函数闭包是JavaScript最棒的特征,没有之一,是它让一切都成为了可能。
- 黑马程序员-Java中IO流知识点总结
- Windows核心编程——》第十七章 内存映射文件 (Memory-Mapped Files)
- 近期web项目总结
- IOS多线程
- 如何监控和解决SQL Server的阻塞(3) (扩展事件)
- vs2010帮助文档未安装解决,提示 "xhelp "
- C# 常用函数集锦
- iOS多线程编程指南(一)关于多线程编程
- CodeForces 416B
- hadoop 求key最大值
- Android Protobuf 初探笔记
- iOS多线程编程指南(二)线程管理
- FreeCMS1.8发布,第一款提供移动APP的java开源CMS!