[SQL SERVER][Maintain]使用Profiler擷取死結資訊

[SQL SERVER][Maintain]使用Profiler擷取死結資訊

SQL Server的Lock Manager會依照需求,決定如何鎖定資料,

以便確保多人使用時不會造成資料錯誤問題,但Lock不是本篇介紹重點,所以也不詳細討論。

本篇將介紹如何使用Profiler來擷取死結資訊,我先來簡單說一下死結是什麼?

SQL Server會依照請求的順序,處理每個交易作業所需資源。

若有兩個處理鎖定了資源,又互相等待對方釋放資源,以便後續處理,這時就形成死結(無止盡的等待)。

這時Lock Manager會自動刪除其中一項回復成本較低者的Process,以便結束死結。

 

預先開啟Profiler準備擷取死結相關資訊。

image

 

死結狀況模擬

 

更新t1資料表某一row

image

 

更新t2資料表某一row,並查詢t1資料表

image

 

回頭再查詢t2資料表某一row

image

SSMS查詢視窗顯示1205錯誤訊息。

 

Profiler擷取deadlock相關資訊

image

當然你也可以存成檔案,以利後續調校使用。

 

參考

使用 SQL Server Profiler 分析死結