SQL Server 死鎖的監視

SQL Server 中,若是出現了兩個事務相互等待對方釋放資源,就會出現死鎖。後啓動的事務或者死鎖優先級較低的事務將會被犧牲,提交被犧牲的事務的應用程序會出現異常。服務器

2010527115823921.jpg

那麼如何監視SQL Server 發生的死鎖事件呢?ide

SQL Server Profiler提供了一組事件,能夠收集到發生的死鎖事件,並清楚的展示死鎖的緣由和處理結果。實現的方法以下:優化

1、打開SQL Server Profiler,新建跟蹤,鏈接到發生死鎖的服務器;spa

2、選擇「TSQL_Locks」跟蹤模板xml

3、點擊「事件選擇」,能夠看到其中幾個關鍵事件——SQL:StmtStarting(TSQL)SP:StmtStarting(Stored Procedures)Deadlock graph(Locks) Lock:Deadlock(Locks)Lock:Deadlock Chain(Locks)對象

4、點擊「運行」,開始跟蹤索引

在跟蹤到死鎖以後,能夠再Profiler中看到下面的死鎖相關事件發生:事件

2010527115949705.jpg

選擇Profiler中的Deadlock graph 事件,能夠看到下面的圖形:事務

201052712311313.jpg

該圖形表示左側的被標識爲X的事務被犧牲了,X箭頭表示事務對對象有排他鎖,U箭頭表示事務請改對象資源

201052712341239.jpg

將鼠標放在橢圓形的事務上,能夠顯示致使死鎖發生的語句。

固然,在咱們跟蹤到死鎖以後,須要解決死鎖的問題,還須要下面的方法:

經過索引優化查詢

事務儘量的簡短

儘可能以相同的順序訪問對象

若是容許的話,使用較低的隔離級別進行訪問

相關文章
相關標籤/搜索