| 現象 | 成因 | 屬性 | 解決方向 |
|---|---|---|---|
| 死鎖 | 雙向循環等待資源,雙方均不釋放 | 應用邏輯缺陷 | 調整程式存取順序、縮短事務、加索引減少掃描 |
| 鎖等待 | 前序事務持有鎖,後序事務排隊 | 效能/並發壓力 | 優化 SQL、調整隔離級別、擴大鎖超時參數 |
db2 get db cfg for <dbname>
重點參數:
DLCHKTIME < LOCKTIMEOUT × 1000,確保死鎖先被偵測到,而非等到超時。db2 update db cfg for <dbname> using LOCKTIMEOUT 30
db2 update db cfg for <dbname> using DLCHKTIME 5000
修改後需 db2stop; db2start 重啟實例生效(部分參數可線上生效,建議統一重啟)。
db2 list applications
db2 list applications show detail
db2 list applications for database <dbname>
用途:確認是否存在未預期的並發連線、識別長時間持有鎖的應用代理程式 ID(agentid),為後續快照分析鎖定目標。
DLCHKTIME、LOCKTIMEOUTlist applications 排查並發來源LOCK、STATEMENT下篇將詳細示範 快照指令實戰與事件監視器部署。