資料庫自治服務DAS為RDS SQL Server提供鎖最佳化功能,您可以通過該功能查看資料庫執行個體中的死結及其詳細資料。
前提條件
-
當前不支援RDS SQL Server 2008 R2雲端硬碟版。
-
所在地區為:
華東1(杭州)、華東2(上海)、華北1(青島)、華北2(北京)、華北3(張家口)、華北5(呼和浩特)、華北6(烏蘭察布)、華南1(深圳)、華南2(河源)、華南3(廣州)、西南1(成都)、中國(香港)、新加坡、阿聯酋(杜拜)。
背景資訊
由於事務的特殊機制,一個事務對特定資源進行修改時會鎖定該資源,以防其他並發事務對同一資源進行修改,從而保證資料一致性。
死結通常由多個事務互相競爭資源引發,例如事務A鎖定資源A並嘗試修改資源B,而事務B鎖定資源B並嘗試修改資源A,導致雙方相互等待對方釋放資源,最終導致死結,此時系統會自動終止成本較低的SQL語句會話(即受害者會話),使無法完成該會話既定任務。如下圖所示:

死結類型
DeadLock統計頁面中包含如下5種死結類型:
-
KeyDeadlock
-
ObjectDeadLock
-
RIDDeadlock
-
PageDeadlock
-
ComplieDeadlock
鎖模式
事務訪問資源時,會根據訪問類型使用不同的鎖模式(LockMode),包括以下幾種:
-
共用鎖定(S):保證目標資源在鎖定期間只能被讀取,不能被修改。
-
更新鎖定(U):預定對目標資源施加排它鎖(X),在資源被當前事務施加排它鎖之前,保證該資源不會被其他事務修改。
-
排它鎖(X):保證目標資源在鎖定期間無法被其他事務訪問。
操作步驟
登入DAS控制台。
在左側導覽列中,單擊智能營運中心 > 執行個體監控。
找到目標執行個體,單擊執行個體ID,進入目標執行個體詳情頁。
-
在左側導覽列中,單擊鎖最佳化 > DeadLock。
-
在DeadLock頁,查看資料庫執行個體中的死結及其詳細資料。
頁面介紹
-
死結數量概覽統計時段包括近一天、近一周、近兩周和近一個月。
可分時段查看近期產生的死結數量。
-
死結變化趨勢

展示某個時間段內發生的死結類型。您可以執行如下操作:
-
選擇起始日期和結束日期,單擊尋找顯示指定時間段的死結資訊。
說明指定的時間間隔不能超過30天。
-
單擊近一天、近一周、近一月快捷查詢所選時間段的死結資訊。
-
將滑鼠移動到特定的時間點,可查詢該時間點內發生的死結類型和數量。
-
單擊趨勢圖右上方的
表徵圖,切換趨勢圖的顯示樣式或下載當前趨勢圖。
-
-
死結詳細資料
單擊左邊的
表徵圖可展示相互鎖定的會話詳情。包含如下內容:-
LastTranStarted:事務開啟的時間。
-
SPID:開啟事務的會話ID。
-
IsVictim:該會話是否已被終止(kill)。
說明SQL Server解決死結的方法是通過一個內部線程定期檢測系統死結,發現死結後,在引發死結的會話之間終止成本相對較低的會話。例如:SELECT語句的成本比UPDATE更低,系統便會優先終止使用SELECT的會話。
-
LogUsed:會話已經產生的日誌大小。單位:位元組。
-
LockMode:鎖模式。更多資訊,請參見鎖模式。
-
WaitResourceDesc:當前事務等待中的資源詳情。
-
ObjectOwned:已經被鎖住的對象。
-
ObjectRequested:當前事務請求加鎖的對象。
-
WaitResource:當前事務等待中的資源。
-
HostName:當前事務的主機名稱。
-
LoginName:當前事務的帳號名稱。
-
Status:當前事務的狀態。
-
ClientApp:當前事務所使用的用戶端名稱。
-
SQLText:SQL語句詳情。
說明單擊該SQL語句可開啟SQL語句視窗,單擊點擊複製可快速複製SQL語句,方便排查或回溯有問題SQL。
單擊任意一行內容可在下方展示對應的死結關係圖。
-
-
死結關系圖

展示發生死結的會話之間的相互關係以及被鎖定資源的詳細資料。您可以單擊點擊下載按鈕下載XDL檔案,該檔案中記錄了對應當前死結的詳細內容,可通過SQL Server Management Studio(SSMS)用戶端開啟並查看。