DB2 V9 前,記憶體參數與緩衝集區皆由 DBA 手動設定。但工作負載屬動態變化(負載類型轉換、用戶增減、維護作業、其他應用搶佔資源),手動調優難以即時響應。DB2 9 引入自動自我調整記憶體(Self-Tuning Memory, STM),由記憶體調整器在排序堆、套件快取、鎖定清單、緩衝集區間動態分配資源,簡化配置並優化效能。
| 消費者 | 控制參數 | 啟用方式 |
| 緩衝集區 | ALTER/CREATE BUFFERPOOL ... SIZE AUTOMATIC | NPAGES = -2 表示啟用 |
| 套件快取 | pckcachesz = AUTOMATIC | UPDATE DB CFG 設定 |
| 鎖定記憶體 | locklist = AUTOMATIC, maxlocks = AUTOMATIC | 兩者必須同步啟用/停用 |
| 排序記憶體 | sortheap = AUTOMATIC, sheapthres_shr = AUTOMATIC | 兩者同步;需 sheapthres = 0 |
| 資料庫共享記憶體 | database_memory = AUTOMATIC | 僅 Windows/AIX 支援 |
啟用 STM 實作範例
1. 建立單分區資料庫(預設啟用 STM)
db2 CREATE DATABASE MYDB1
驗證配置:
db2 GET DB CFG FOR MYDB1
# 顯示 self_tuning_mem = ON
# pckcachesz, locklist, maxlocks, sortheap, sheapthres_shr, database_memory 皆為 AUTOMATIC
# db_mem_thresh = 10 (未使用記憶體超過 10% 才釋回 OS)
2. 檢視緩衝集區 STM 狀態
db2 "SELECT BPNAME, NPAGES FROM SYSIBM.SYSBUFFERPOOLS"
# NPAGES = -2 表示啟用 STM(IBMDEFAULTBP 預設啟用)
3. 建立/修改緩衝集區啟用 STM
# 新建啟用 STM
db2 CREATE BUFFERPOOL MYBP1 IMMEDIATE SIZE 100 AUTOMATIC PAGESIZE 4K
# 新建不啟用 STM
db2 CREATE BUFFERPOOL MYBP2 IMMEDIATE SIZE 100 PAGESIZE 4K
# 修改既有緩衝集區啟用 STM
db2 ALTER BUFFERPOOL MYBP2 IMMEDIATE SIZE 100 AUTOMATIC
4. 遷移資料庫手動啟用 STM
UPDATE DB CFG USING self_tuning_mem ON
- 將相關參數設為
AUTOMATIC(至少兩個消費者啟用,sortheap 除外)。
- 緩衡集區用
ALTER BUFFERPOOL ... SIZE AUTOMATIC。
停用 STM 方法
關鍵限制與注意事項
- STM 需至少兩個消費者啟用(sortheap 除外)才能在區域間重新分配記憶體。
locklist 與 maxlocks、sheapthres_shr 與 sortheap 必須同步啟用/停用。
- 僅當
sheapthres = 0 時才允許 sheapthres_shr/sortheap 自動調整。
- HADR 環境下 STM 僅在主伺服器運作;角色切換時 STM 隨之切換。
- 記憶體資源極度受限(如
database_memory 設極小、多實例共存)時 STM 效益有限。
- 工作負載記憶體特徵劇烈波動時,STM 調整頻率降低,僅嘗試維持近似最佳配置。
通告來源:https://www.cncms.com.cn/db2/q372739.Html
- 上一篇文章: DB2 9 認證考試備考教程全覽(730/731)
- 下一篇文章: DB2 9.1 新功能:原生支援 IPv6 協議
Copyright ©
程式碼之家 All Rights Reserved