緩衝池是記憶體中暫存資料庫頁 (含表行、索引項) 的區域。記憶體存取速度比磁碟快數量級,因此減少物理 I/O 是效能調優首要目標。連接應用的絕大多數資料操作 (除 LOB/LONG 外) 皆在緩衝池進行,配置得當與否直接決定系統吞吐量。
IBMDEFAULTBP (頁大小 4K)。SYSCAT.BUFFERPOOLS.NPAGES = -1 時,由資料庫配置參數 BUFFPAGE 控制大小;否則以 NPAGES 固定頁數為準。NPAGES 改為 -1,統一由 BUFFPAGE 管理,便於整體調整。# 1. 驗證目錄值
db2 -v connect to DB_NAME
db2 -v "SELECT BPNAME, NPAGES, PAGESIZE FROM SYSCAT.BUFFERPOOLS"
db2 -v connect reset
# 2. 統一啟用 BUFFPAGE 控制
db2 -v connect to DB_NAME
db2 -v "ALTER BUFFERPOOL IBMDEFAULTBP SIZE -1"
# 若有其他自訂 BP 同樣處理
db2 -v connect reset
# 3. 設定合適 BUFFPAGE 值 (需重啟資料庫生效)
db2 -v update db cfg for DB_NAME using BUFFPAGE 40000 # 40,000 頁 = 160 MB (4K 頁)
db2 -v terminate
| 負載類型 | 起始 BUFFPAGE (4K 頁) | 記憶體佔用 | 後續策略 |
|---|---|---|---|
| 一般 OLTP | 40,000 (160 MB) | 機器總記憶體 10% | 監控命中率,逐步增至最佳 |
| 大型 OLTP / 混合負載 | 400,000 (1.6 GB) | 視記憶體而定 | 保留 OS/其他程式記憶體,避免 Swap |
| 純分析/數倉 | 依表空間大小規劃多 BP | 大表空間獨享大 BP | 配合頁大小 (8K/16K/32K) 規劃 |
針對不同特性表空間分配專屬 BP,避免熱點資料互相擠佔:
實施步驟:CREATE BUFFERPOOL → ALTER TABLESPACE ... BUFFERPOOL newbp → 重啟資料庫生效。
# 1. 啟用緩衝池監控開關
db2 -v "UPDATE MONITOR SWITCHES USING BUFFERPOOL ON"
db2 -v "GET MONITOR SWITCHES" # 確認生效
# 2. 重置計數器
db2 -v "RESET MONITOR ALL"
# 3. 執行代表性負載 (或等待業務高峰期)
# 4. 擷取快照 (務必在斷開連接前!)
db2 -v "GET SNAPSHOT FOR ALL BUFFERPOOLS" > bp_snap.out
db2 -v "GET SNAPSHOT FOR ALL DATABASES" >> bp_snap.out
db2 -v "RESET MONITOR ALL"
db2 -v terminate
關鍵:最後一個應用斷開時資料庫停止,快照統計隨之消失。必須保持至少一條連接 (或 ACTIVATE DATABASE) 直到擷取完成。
Hit Ratio = (1 - (Pool Data Physical Reads + Pool Index Physical Reads)
/ (Pool Data Logical Reads + Pool Index Logical Reads)) * 100%
範例快照片段:
Buffer pool data logical reads = 702,033
Buffer pool data physical reads = 0
Buffer pool index logical reads = 168,255
Buffer pool index physical reads = 0
Hit Ratio = (1 - (0+0)/(702033+168255)) * 100% = 100%
| 命中率區間 | 健康度 | 建議行動 |
|---|---|---|
| >= 95% | 優秀 | 維持現狀,定期巡檢 |
| 90% - 95% | 良好 | 觀察趨勢,評估微調 |
| 80% - 90% | 需關注 | 增加 BP 大小或分離熱點表空間 |
| < 80% | 嚴重不足 | 立即擴充記憶體/BP,檢查是否有全表掃描洪水 |
PREFETCHSIZE)。NUM_IOCLEANERS / CHNGPGS_THRESH 協同調優 → 髒頁沖刷不及時同樣造成物理讀。
緩衝池調優核心循環:基線快照 → 計算命中率 → 診斷瓶頸 (大小/隔離/存取模式) → 調整配置 → 驗證成效。掌握 BUFFPAGE/NPAGES 機制、多 BP 架構設計、快照標準化擷取與命中率判讀,即可為 DB2 打造高效能記憶體存取層。