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

使用 SQL 實現 DB2 核心指標監控:快照監視器完整指南

     編輯:DB2 教學

快照監視器表函數總覽

DB2 提供一系列 SNAPSHOT_* 表函數,透過標準 SQL 即可擷取資料庫管理器、資料庫、應用程式、緩衝池、表空間、鎖、動態 SQL 快取等多維度效能指標。所有函數接受資料庫別名與分區號(-1 代表所有分區)。

資料庫管理器層級

  • SNAPSHOT_DBM(-1):DB2 實例整體狀態
  • SNAPSHOT_FCM(-1):快速通訊管理器 (FCM) 指標
  • SNAPSHOT_FCMPARTITION(-1):分區級 FCM 指標
  • SNAPSHOT_SWITCHES(-1):監視器開關設定

資料庫層級 (以 SAMPLE 為例)

  • SNAPSHOT_DATABASE('SAMPLE', -1):資料庫整體健康度
  • SNAPSHOT_APPL('SAMPLE', -1):應用程式連線資訊
  • SNAPSHOT_APPL_INFO('SAMPLE', -1):應用識別詳細資訊
  • SNAPSHOT_LOCKWAIT('SAMPLE', -1):鎖等待情況
  • SNAPSHOT_STATEMENT('SAMPLE', -1):SQL 陳述式執行統計
  • SNAPSHOT_AGENT('SAMPLE', -1):代理程式狀態
  • SNAPSHOT_SUBSECT('SAMPLE', -1):子區段執行資訊(分區環境)

緩衝池與表空間

  • SNAPSHOT_BP('SAMPLE', -1):緩衝池命中率、讀寫頁數
  • SNAPSHOT_TBS('SAMPLE', -1):表空間使用量、狀態
  • SNAPSHOT_TBS_CFG('SAMPLE', -1):表空間配置資訊
  • SNAPSHOT_QUIESCER('SAMPLE', -1):靜默狀態資訊
  • SNAPSHOT_CONTAINER('SAMPLE', -1):容器配置
  • SNAPSHOT_RANGES('SAMPLE', -1):表空間映射範圍

表、鎖與動態 SQL

  • SNAPSHOT_TABLE('SAMPLE', -1):表存取統計
  • SNAPSHOT_LOCK('SAMPLE', -1):鎖詳細資訊
  • SNAPSHOT_DYN_SQL('SAMPLE', -1):動態 SQL 快取內容(高耗 SQL 分析利器)

實務應用範例

1. 監控緩衝池命中率

SELECT 
  BP_NAME,
  POOL_DATA_L_READS + POOL_INDEX_L_READS AS LOGICAL_READS,
  POOL_DATA_P_READS + POOL_INDEX_P_READS AS PHYSICAL_READS,
  CASE WHEN (POOL_DATA_L_READS + POOL_INDEX_L_READS) > 0
       THEN 100 * (1 - FLOAT(POOL_DATA_P_READS + POOL_INDEX_P_READS) / 
                    FLOAT(POOL_DATA_L_READS + POOL_INDEX_L_READS))
       ELSE 100 END AS HIT_RATIO_PCT
FROM TABLE(SNAPSHOT_BP('SAMPLE', -1)) AS BP;

2. 找出長時間鎖等待

SELECT AGENT_ID, APPL_ID, LOCK_MODE, LOCK_STATUS, LOCK_WAIT_TIME
FROM TABLE(SNAPSHOT_LOCKWAIT('SAMPLE', -1)) AS LW
WHERE LOCK_WAIT_TIME > 10000;

3. 動態 SQL 快取 Top 10 耗時語句

SELECT STATEMENT_TEXT, NUM_EXECUTIONS, TOTAL_EXEC_TIME, 
       TOTAL_EXEC_TIME / NULLIF(NUM_EXECUTIONS,0) AS AVG_TIME_MS
FROM TABLE(SNAPSHOT_DYN_SQL('SAMPLE', -1)) AS DS
ORDER BY TOTAL_EXEC_TIME DESC
FETCH FIRST 10 ROWS ONLY;

使用建議

  • 監視器開關需啟用對應類別(UPDATE MONITOR SWITCHES USING ...)才能收集詳細資料。
  • 生產環境建議封裝為預存程序或排程作業,定期寫入歷史表進行趨勢分析。
  • 分區環境下可指定分區號或用 GLOBAL 關鍵字聚合全分區視圖。
  • 結合 MON_GET_* 表函數(DB2 9.7+)可獲得更豐富的指標與更佳效能。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved