緩衝池作為記憶體中專供 DB2 使用的頁面快取區,直接決定磁碟 I/O 頻率。研究表明,合理配置緩衝池是資料庫效能調優的第一關鍵步驟。DB2 啟動時預設建立 IBMDEFAULTBP(Linux/Unix 1000 頁、Windows 250 頁,頁面 4KB),DBA 應依據實際負載透過 ALTER BUFFERPOOL 或控制中心動態調整大小與數量。
特殊場景策略:超大表隨機存取用小池(用完即丟);小表高頻訪問用大池(一次載入、反覆複用)。
| 維度 | SMS(系統管理) | DMS(資料庫管理) |
|---|---|---|
| 空間分配 | OS 檔案系統自動擴展 | DBA 預分配、DB2 管理 |
| 效能 | 管理簡易,適合持續增長表 | 回應更快,適合頻繁讀寫但增長緩慢的表 |
| 大小上限 | 16,777,215 頁 | 受容器大小限制 |
預設皆為 32 頁,實際應依磁碟陣列調整:
Min Extent Size = (容器跨越的物理磁碟數 × 4096) / 表空間頁面大小
Max Extent Size = 524288 / 表空間頁面大小
最佳值介於兩者間,需實測驗證(建立後不可修改,須重建表空間)
Prefetch Size = Extent Size × 容器數 × 3(因子通常為 3)
Prefetch 越大通常越好,可突破 Extent 上限。
DMS 表空間允許將「常規資料、索引、長欄位」三類物件分置獨立表空間,預設同居一空間。實測分離存放常能顯著改善 I/O 平行度與維護彈性。
db2empfa大量匯入時啟用 db2empfa(設 multipage_alloc=YES),讓 SMS 每次按 Extent 而非單頁擴展,減少檔案系統元資料操作開銷。
索引加速查詢與並發,但佔用空間、拖慢寫入。DB2 8.1 引入「設計顧問」,擷取典型負載後推薦建立/刪除索引,避免主觀臆測。
RUNSTATS 定期更新系統目錄統計,支援優化器生成最優存取路徑。關鍵觸發時機:
REBIND 相關套件,否則靜態 SQL 可能沿用舊計劃導致效能退化語法範例:RUNSTATS ON TABLE DEFAULT.EMPLOYEE WITH DISTRIBUTION AND INDEXES ALL SHRLEVEL CHANGE
基本調優非一蹴而就,需建立持續監控與迭代機制。