如何即時查看資料庫當前的表/列級死鎖與鎖等待狀況?
db2 UPDATE MONITOR SWITCHES USING LOCK ON
db2 UPDATE MONITOR SWITCHES USING LOCK ON, TABLE ON, STATEMENT ON, BUFFERPOOL ON, SORT ON, UOW ON。db2 GET SNAPSHOT FOR LOCKS ON <database_name>
db2 GET SNAPSHOT FOR LOCKS ON dbname > locksnap.txt。| 欄位 | 含義 | 死鎖分析重點 |
|---|---|---|
| Agent ID / Appl Handle | 應用程式代理編號 | 識別死鎖參與者 |
| Lock Name | 鎖資源標識(表/頁/列) | 找出爭用熱點物體 |
| Lock Mode | S (Share)、X (Exclusive)、IS、IX、U 等 | X-X 或 X-S 衝突最嚴重 |
| Lock Status | Granted / Waiting / Converting | Waiting = 正在等待,Converting = 升級中 |
| Lock Escalation | 是否已升級為表鎖 | 頻繁升級 = 鎖清單不足 |
快照僅顯示「當下」狀態。若需事後分析死鎖發生時間、參與 SQL、受害者選擇,需建立死鎖事件監控器:
db2 CREATE EVENT MONITOR DEADLOCK FOR DEADLOCKS WRITE TO FILE '/home/db2inst1/deadlock_evm'
db2 SET EVENT MONITOR DEADLOCK STATE 1
# 事發後
db2 EVMON_FORMAT_UE_TO_TABLE -evm DEADLOCK -db dbname
# 查詢格式化表 DEADLOCKS, DLCONN, DLLOCK, DLSTM