調優三大核心維度
1. 記憶體因素
緩衝池
- 頁面大小:4K/8K/16K/32K,對應表空間頁面
- 命中率公式:
(1 - (物理讀/邏輯讀)) × 100%,過低需擴大
- 過大導致連線建立慢(記憶體配置耗時)
關鍵堆疊參數
| 參數 | 用途 | 不足後果 |
| SORTHEAP | 查詢排序記憶體 | 溢出至暫存表,效能驟降 |
| LOCKLIST | 鎖清單記憶體 (32位:96B/鎖, 64位:128B/鎖) | 鎖升級 (列鎖→表鎖),並發度暴跌 |
| LOGBUFSZ | 日誌緩衝區 | 增加日誌 I/O 頻率 |
- 相關閾值:
SHEAPTHRES_SHR (共享排序上限)、SHEAPTHRES (私有排序上限)、MAXLOCKS (單應用佔用 LOCKLIST %)。
STMM 自動調適記憶體管理器 (V9+)
啟用 SELF_TUNING_MEM=ON 並將上述參數設為 AUTOMATIC,DB2 依負載動態調整,大幅減少人工調校。
2. CPU 因素
優化器與存取路徑
- SQL 經解析、語義分析、重寫、基於成本優化 (CBO) 產生存取計劃
- 工具:Visual Explain (圖形)、
db2exfmt (格式化解釋表)、db2expln
- 優化等級 0-9 (預設 5),
DFT_QUERYOPT 控制。非越高越好,簡單 SQL 高等級得不償失
聯結策略選擇
| 聯結類型 | 機制 | 適用場景 | 優化等級需求 |
| 巢狀迴圈 (NLJ) | 笛卡兒積多次迴圈 | 小結果集、有索引支援時極快 | 所有等級 |
| 合併聯結 (Merge Join) | 單次掃描,需排序 | 大量資料、等值聯結、單一等式條件 | >=1 |
| 雜湊聯結 (Hash Join) | 建雜湊表單次掃描 | 大量資料、多等式條件、需大 SORTHEAP | >=5 |
CPUSPEED 參數
標示 CPU 速度協助優化器估算成本,預設 -1 自動校準。
3. I/O 因素
- 資料/索引/日誌分離不同實體磁碟:交易中資料與索引並行讀、提交時資料與日誌並行寫
- DMS 表空間優於 SMS:可用裸裝置繞過檔案系統快取,直接存取緩衝池
- 日誌檔案大小 (LOGFILSIZ):調大減少切換開銷,避免過大浪費空間
- 隔離等級權衡:RR > RS > CS > UR,越高完整性越好但並發越低
- 多分區 (DPF) 平行 I/O:協調節點分派任務至多節點並行讀寫
核心調優工具箱
| 工具/指令 | 功能 |
| SNAPSHOT | 即時獲取緩衝池、鎖、排序、SQL 等快照 |
| DB2PD | 分析應用程式、代理、記憶體區、緩衝池、日誌、鎖狀態 |
| RUNSTATS | 收集統計資訊更新系統表,引導優化器選擇最佳計劃 |
| REORG | 重組資料/索引碎片,加速檢索 |
| DB2DART | 檢查表空間、索引、結構正確性,分析效能問題根因 |
| DB2SUPPORT | 收集 DB2 與 OS 所有資訊生成壓縮包供專家分析 |
延伸效能因素
- XML 優化:V9+ 純 XML 型態支援節點級直接存取與 XML 索引,效能遠優於 CLOB 解析模式
- 作業系統層:共享記憶體、訊號量、虛擬記憶體、磁碟分佈配置
- 網路層:頻寬、延遲、防火牆封包過濾皆影響 DB2 I/O 效能