首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

DB2 鎖問題診斷全流程:從參數調優到快照與事件監控器實戰

     編輯:DB2 教學

鎖現象分類與本質區別

類型成因屬性對策方向
死鎖雙向資源搶佔,程式邏輯缺陷程式錯誤調整存取順序、縮短事務、降低隔離級別
鎖等待資源爭用,正常並發現象效能問題SQL 調優、索引優化、調整鎖超時參數

第一線參數:DLCHKTIME 與 LOCKTIMEOUT

db2 get db cfg | grep -E "DLCHKTIME|LOCKTIMEOUT"
db2 update db cfg using LOCKTIMEOUT 30    # 建議 10-60 秒,-1 表無限等待(生產禁用)
db2 update db cfg using DLCHKTIME 5000    # 死鎖檢查間隔(ms),宜小於 LOCKTIMEOUT

原則:DLCHKTIME (ms) < LOCKTIMEOUT (s) × 1000,確保死鎖優先被檢測而非等待超時。

並發應用快速排查

db2 list applications show detail
# 關鍵欄位:
# Application Name: db2bp=CLP, java=CC/Java應用
# Application Id: LOCAL.用戶.時間 / 16進制IP.用戶.時間

用途:識別測試環境殘留連線、確認生產並發模式、鎖定問題應用來源。

監視器開關:啟用鎖與語句快照

db2 get monitor switches
db2 update monitor switches using LOCK ON STATEMENT ON
# 建議同開:BUFFERPOOL, SORT, TABLE, UOW, TIMESTAMP

五大快照獲取指令

層級指令典型用途
資料庫管理器db2 get snapshot for dbm整體資源、配置、代理狀態
資料庫db2 get snapshot for database on <db>緩衝池命中、鎖升級、日誌、排序
應用/代理db2 get snapshot for application agentid <id>特定應用鎖等待鏈、執行 SQL、狀態
表/表空間db2 get snapshot for tables on <db>表掃描、鎖模式、資料列讀寫統計
鎖詳細db2 get snapshot for locks on <db> [for application agentid <id>]鎖持有者/請求者、模式、物件、等待時間

動態 SQL 快照:找出高耗語句

db2 get snapshot for dynamic sql on <db>
# 輸出含:執行次數、總/平均耗時、排序/列存取、語句文本

事件監控器:歷史鎖與語句留存分析

三大事件類型

  • DEADLOCKS:死鎖摘要
  • DEADLOCKS WITH DETAILS:含完整 SQL、鎖鏈、隔離級別
  • STATEMENTS:語句執行歷史(耗時、返回行、存取計劃)

建立與啟用範例

-- 建立(寫入檔案,目錄需 DB2 實例擁有者寫權限)
CREATE EVENT MONITOR mylock FOR DEADLOCKS WITH DETAILS, STATEMENTS 
  WRITE TO FILE '/home/db2inst1/evmon/lcks';

-- 啟用
SET EVENT MONITOR mylock STATE 1;

-- 讀取報告(斷開連線後自動寫入)
db2evmon -path '/home/db2inst1/evmon/lcks' > deadlock_report.txt

診斷流程圖解

  1. 檢查 LOCKTIMEOUT ≠ -1,DLCHKTIME 合理
  2. LIST APPLICATIONS 確認並發來源
  3. 開啟 LOCK/STATEMENT 監視器
  4. 問題發生時立即抓 LOCKS 快照 + DYNAMIC SQL 快照
  5. 持續問題部署事件監控器(DEADLOCKS WITH DETAILS + STATEMENTS)
  6. 分析報告:鎖升級、索引缺失、事務過長、隔離級別過高
  7. 對症下藥:加索引、重寫 SQL、拆分事務、調降隔離級別、分區裁剪

參考資源

  • 《System Monitor Guide and Reference》
  • DB2 Information Center:Event Monitor / Snapshot Monitor 章節
  • Redbook:DB2 UDB Performance Tuning
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved