DB2 提供一系列 SNAPSHOT_* 表函數,透過標準 SQL 即可擷取資料庫管理器、資料庫、應用程式、緩衝池、表空間、鎖、動態 SQL 快取等多維度效能指標。所有函數接受資料庫別名與分區號(-1 代表所有分區)。
SNAPSHOT_DBM(-1):DB2 實例整體狀態SNAPSHOT_FCM(-1):快速通訊管理器 (FCM) 指標SNAPSHOT_FCMPARTITION(-1):分區級 FCM 指標SNAPSHOT_SWITCHES(-1):監視器開關設定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):表空間映射範圍SNAPSHOT_TABLE('SAMPLE', -1):表存取統計SNAPSHOT_LOCK('SAMPLE', -1):鎖詳細資訊SNAPSHOT_DYN_SQL('SAMPLE', -1):動態 SQL 快取內容(高耗 SQL 分析利器)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;
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;
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+)可獲得更豐富的指標與更佳效能。