本文針對同主題 20 大誤區,提供更具體的驗證方法、參數調校範例與版本演進說明,作為前文的實戰補充篇。
-- 建立專用緩衝區
CREATE BUFFERPOOL BP_OLTP SIZE 50000 PAGESIZE 4K;
CREATE BUFFERPOOL BP_DW SIZE 100000 PAGESIZE 32K; -- 大頁面支援掃描
-- 修改表空間使用專用 BP
ALTER TABLESPACE TS_OLTP BUFFERPOOL BP_OLTP;
ALTER TABLESPACE TS_DW BUFFERPOOL BP_DW;
驗證: db2pd -d sample -bufferpools 觀察各 BP 命中率、物理讀寫,對比合併 BP0 時的指標。
| EXPLAIN 不顯示 | 獲取途徑 |
|---|---|
| 查詢塊執行順序 | db2exfmt 輸出中的 QUERYNO/QBLOCKNO 層級 |
| 階段謂詞 (Stage 1/2) | PREDICATE 區段的 HOW_APPLIED 欄位 |
| 實際執行時間/行數 | MON_GET_PKG_CACHE_STMT, db2pd -dyn |
| 並行度實際分佈 | db2pd -agents, db2pd -applications |
| 鎖等待/日誌寫入延遲 | MON_GET_ACTIVITY, db2pd -locks |
-- 關鍵監控 SQL
SELECT
APPL_ID,
LOCK_WAIT_TIME,
LOCK_WAITS_GLOBAL,
DEADLOCKS,
LOCK_ESCALS
FROM TABLE(MON_GET_APPLICATION(NULL, -2))
WHERE LOCK_WAIT_TIME > 1000 -- 超過 1 秒鎖等待
ORDER BY LOCK_WAIT_TIME DESC;
納入監控系統 (Grafana/Prometheus/ITM) 設定告警閾值,而非等待死鎖/逾時事件。
| 領域 | 舊版認知 (V8/V9) | 新版現實 (V11.5/V12/Cloud Pak) |
|---|---|---|
| 壓縮 | 僅靜態表適用 | 自適應壓縮 (ADC)、行級壓縮、OLTP 表亦受益 |
| 統計資訊 | 手工 RUNSTATS | 自動統計 (AUTO_RUNSTATS)、即時統計 (RTS)、樣本掃描 |
| 優化器 | 規則基礎 + 成本基礎 | AI 優化器 (Db2 AI for SQL)、自適應查詢處理 |
| 記憶體管理 | 手工配置 Heap/Bufferpool | 自動記憶體管理 (STMM)、統一記憶體架構 |
| 索引維護 | 離線 REORG | 在線 REORG、非同步索引清理、自適應索引 |

效能調優無標準答案,只有持續度量、假設驗證、知識沉澱。拋棄教條,擁抱數據驅動的實證方法論。