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

DB2 動態 SQL 監控實戰:Snapshot 與 Event Monitor 完整比較

     編輯:DB2 教學

掌握動態 SQL 執行情況是效能調校的基礎。DB2 提供兩種主要監控機制:Snapshot Monitor(快照監控)與Event Monitor(事件監控),兩者適用場景與效能影響截然不同。

快速選擇指南

特性Snapshot MonitorEvent Monitor
效能影響極低,適合生產環境常態監控極大,每條 SQL 皆記錄完整特徵與執行資訊
資料粒度彙總統計(執行次數、平均耗時等)逐條 SQL 完整文本、存取計畫、執行上下文
適用場景日常健康檢查、趨勢分析問題 SQL 深度診斷、開發測試階段
儲存方式記憶體中即時統計寫入檔案系統(.evt 檔案)

Event Monitor 完整部署流程

⚠️ 警告:事件監控器會顯著影響資料庫效能,嚴禁在高負載生產環境長期啟用。

步驟 1:建立並啟動監控器

db2 connect to <資料庫名稱>
db2 "update monitor switches using statement on"
db2 "create event monitor sqlmon for statements write to file '/db2/monitor'"
db2 "set event monitor sqlmon state 1"

確保 /db2/monitor 目錄存在且有足夠空間(建議預留 500MB 以上),DB2 實例擁有者需具備寫入權限。

步驟 2:執行待監控的業務負載

保持監控會話開啟,執行正常業務操作或重現問題場景。/db2/monitor 目錄下會產生 *.evt 二進位追蹤檔。

步驟 3:停止監控並轉換報表

db2 "set event monitor sqlmon state 0"
db2 terminate

在一般命令提示字元(非 db2 互動模式)執行:

db2evmon -path /db2/monitor > sqltrace.txt

產生的 sqltrace.txt 為可讀文本報表,包含每條 SQL 的完整文本、執行時間、存取計畫、資源消耗等詳細資訊。

步驟 4:清理資源

db2 connect to <資料庫名稱>
db2 "drop event monitor sqlmon"

Snapshot Monitor 輕量替代方案

日常監控建議使用快照功能,無需建立物件,效能影響可忽略:

-- 捕捉動態 SQL 快照
db2 "get snapshot for dynamic sql on <資料庫名稱>"

-- 重置計數器(基準線比較用)
db2 "reset monitor for database <資料庫名稱>"

配合 db2pd -d -dynamic 可獲取更詳細的記憶體中動態 SQL 快取資訊。

儲存程序監控特別說明

儲存程序內部 SQL 需使用 Statement Event Monitor 捕捉。建立方式類似,但指定 for statements 而非 for transactions。同樣需謹慎評估效能影響。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved