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

DB2 鎖問題診斷實戰(下):快照監控與事件監視器深度應用

     編輯:DB2 教學

檢視並發應用程式

db2 list applications show detail
db2 list applications for database <dbname> show detail

重點關注 Application Name(如 db2bp 為 CLP、java 為 JDBC/DB2CC)與 Application Id(本地顯示 LOCAL.user.time,遠端顯示十六進位 IP+用戶+時間),快速識別不必要的並發連線。

啟用監視器開關

db2 get monitor switches
db2 update monitor switches using LOCK ON STATEMENT ON

建議長期開啟 LOCK(鎖等待/死鎖)與 STATEMENT(SQL 文本),視需要開啟 BUFFERPOOL、SORT、TABLE、UOW。

多層級快照獲取指令

層級指令用途
資料庫管理器db2 get snapshot for dbm實例級資源、連線統計
資料庫db2 get snapshot for database on <dbname>緩衝區、日誌、鎖、排序等核心指標
應用/代理程式db2 get snapshot for application agentid <appl-handle>單一應用 SQL、鎖、等待細節
資料表db2 get snapshot for tables on <dbname>資料表讀寫行數、鎖升級狀況
鎖db2 get snapshot for locks on <dbname>當前所有鎖模式、持有者、等待者
動態 SQLdb2 get snapshot for dynamic sql on <dbname>高耗資源 SQL 文本與執行統計

事件監視器:捕捉死鎖與 SQL 全紀錄

事件監視器以非同步寫入檔案,適合生產環境長期蒐集。

  1. 建立監視器:
CREATE EVENT MONITOR evm_deadlock
    FOR DEADLOCKS, DEADLOCKS WITH DETAILS, STATEMENTS
    WRITE TO FILE 'C:\temp\evm_log';
  1. 啟用監視器:
SET EVENT MONITOR evm_deadlock STATE 1;
  1. 事後分析:
db2evmon -path 'C:\temp\evm_log'

輸出包含死鎖參與者、鎖模式、完整 SQL 文本、隔離級別等,可直接導入分析工具或人工排查。

實戰建議

  • 例行維護窗口開啟完整快照,平時僅開啟 LOCK、STATEMENT 降低開銷。
  • 事件監視器目錄需預留足夠磁碟空間,建議設定保留天數自動清理。
  • 結合 db2pd -locks、db2pd -agents 進行即時補充觀測。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved