zoukankan      html  css  js  c++  java
  • 使用默认system_health分析死锁(Deadlock)

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

     

     

  • 相关阅读:
    2019年下半年学习总结
    要看的积累
    【长期积累】Java
    【长期积累】数据库
    一些知识总结
    一些小总结
    优秀前端框架Semantic UI
    windows nodejs express的安装
    形象的讲解angular中的$q与promise(转)
    centos6.5 install mongodb
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/6911270.html
Copyright © 2011-2022 走看看