码迷,mamicode.com
首页 > 其他好文 > 详细

使用默认system_health分析死锁(Deadlock)

时间:2017-05-27 10:40:02      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:post   ast   gre   buffer   .com   新功能   自己   没有   分享   

2008之前我们分析死锁须要用profiler trace或者trace flag 1222,1204.2008中引入了一个新功能:Extended Events(扩展事件)。能够监控Deadlock事件,而且性能更好。 

 

并且2008自带了一个默认扩展事件会话system_health,假设你执行在2008或者之上版本号能够执行以下查询: 

 

 select * from sys.dm_xe_sessions

 

当中system_health会收集非常多重要的信息,之后出现故障能够用来分析。system_health会话收集信息參考http://msdn.microsoft.com/en-us/library/ff877955.aspx。当中一项内容是:Any deadlocks that are detected. 

 

 技术分享

也就是SQL Server会自己主动收集deadlock的信息。并记录在ring_buffer

通过分析ring_buffer就能够找到死锁原因,这样就不须要使用profiler或者Trace Flag收集信息。

 

使用以下的代码查看deadlock_report的内容:

 

SELECT    xed.value(‘@timestamp‘,‘datetime‘)as Creation_Date,

         xed.query(‘.‘)AS Extend_Event

 FROM    (   SELECT   CAST([target_data]ASXML)AS Target_Data

             FROM    sys.dm_xe_session_targetsAS xt

                     INNER JOIN sys.dm_xe_sessionsAS xs

                     ON xs.address= xt.event_session_address

             WHERE    xs.name=N‘system_health‘

                     AND xt.target_name=N‘ring_buffer‘)

 AS XML_Data

 CROSS APPLY Target_Data.nodes(‘RingBufferTarget/event[@name="xml_deadlock_report"]‘)AS XEventData(xed)

 ORDER BY Creation_DateDESC


 

 

 技术分享

技术分享

 

默认的system_health在不影响性能的情况下将一些重要事件记录下来,方便我们后期做分析,这是一个很好的功能。避免了之前可能因为没有及时监控而找不到原因的状况。

 

 

使用默认system_health分析死锁(Deadlock)

标签:post   ast   gre   buffer   .com   新功能   自己   没有   分享   

原文地址:http://www.cnblogs.com/gavanwanggw/p/6911270.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!