全部產品
Search
文件中心

ApsaraDB RDS:死結

更新時間:Apr 10, 2025

RDS SQL Server提供了死結統計(DeadLock)頁面,展示事務的開始時間、會話ID、被鎖資源詳情及死結類型等資訊,協助您快速定位和最佳化引發死結的問題SQL及其他異常。本文介紹通過RDS控制台查看RDS SQL Server資料庫中的死結及其詳細資料的方法。

背景資訊

由於事務的特殊機制,一個事務對特定資源進行修改時會鎖定該資源,以防其他並發事務對同一資源進行修改,從而保證資料一致性。

死結通常由多個事務互相競爭資源引發,例如事務A鎖定資源A並嘗試修改資源B,而事務B鎖定資源B並嘗試修改資源A,導致雙方相互等待對方釋放資源,最終導致死結,此時系統會自動終止成本較低的SQL語句會話(即受害者會話),使無法完成該會話既定任務。如下圖所示:

死結

死結類型

DeadLock統計頁面中包含如下5種死結類型

  • KeyDeadlock

  • ObjectDeadLock

  • RIDDeadlock

  • PageDeadlock

  • ComplieDeadlock

鎖模式

事務訪問資源時,會根據訪問類型使用不同的鎖模式(LockMode),包括以下幾種:

  • 共用鎖定(S):保證目標資源在鎖定期間只能被讀取,不能被修改。

  • 更新鎖定(U):預定對目標資源施加排它鎖(X),在資源被當前事務施加排它鎖之前,保證該資源不會被其他事務修改。

  • 排它鎖(X):保證目標資源在鎖定期間無法被其他事務訪問。

前提條件

  • 不支援RDS SQL Server 2008 R2雲端硬碟版執行個體。

  • 執行個體所在地區目前僅支援:華東1(杭州)、華東2(上海)、華北1(青島)、華北2(北京)、華北3(張家口)、華北5(呼和浩特)、華北6(烏蘭察布)、華南1(深圳)、華南2(河源)、華南3(廣州)、西南1(成都)、中國(香港)、新加坡、阿聯酋(杜拜)。

查看死結詳情

  1. 訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。

  2. 在左側導覽列,選擇自治服務(原CloudDBA) > 锁优化

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)用戶端開啟並查看。

    死結關係圖

死結解決方案及調優建議

RDS SQL Server出現死結時的處理方法