DB2 Self-Tuning Memory Manager (STMM) 啟用後,會動態將記憶體分配給排序堆、套件快取、鎖清單、緩衝區池等消費者,透過內部指標預測增減記憶體對效能的影響,通常一小時內從出廠預設調至近似最佳狀態。但調優過程可能產生數百次決策,配置檔僅反映最新值——若要回溯歷史、診斷異常,必須分析日誌。
| 日誌 | 位置 | 內容特色 | 主要用途 |
|---|---|---|---|
| db2diag.log | 診斷目錄(diagpath) | 每次配置變更的簡要記錄,標註「STMM CFG」 | 快速檢視近期調優動作 |
| STMM 專屬日誌 | diagpath/stmmlog/ | 決策前統計數據、執行動作、收益預測等完整細節 | 深度分析、支援人員診斷、繪製趨勢圖 |
2006-10-17-19.10.00.912218-240 I408210A457 LEVEL: Event
PID : 946302 TID : 1 PROC : db2stmm (MYDB1) 1
FUNCTION: DB2 UDB, config/install, sqlfLogUpdateCfgParam, probe:20
CHANGE : STMM CFG DB DEWHR000: "Sheapthres_shr" From: "109306" <automatic>
To: "105115" <automatic>
關鍵標記:STMM CFG 表示由 STMM 執行,非人工修改。
2006-10-17-19.03.58.672185-240 I395047A488 LEVEL: Event
FUNCTION: DB2 UDB, buffer pool services, sqlbAlterBufferPoolAct, probe:90
MESSAGE : Altering bufferpool "BUFFERPOOL_16K" From: "117268" <automatic>
To: "109666" <automatic>
# 只看緩衝區池變更
db2diag -g "message:=Altering bufferpool" db2diag.log
# 分區資料庫:只看節點 1 的配置變更
db2diag -node 1 -g "changeevent:=CFG DB" db2diag.log
$diagpath/stmmlog/parseStmmLogFile.pl <log_file> <database_name> [options]
| 欄位 | 意義 |
|---|---|
| Interval | 調優序號 |
| Date | 發生時間 |
| totSec | 從首次調優起累積秒數 |
| secDif | 距上次調優間隔秒數(含統計蒐集與調整耗時) |
| 選項 | 輸出焦點 | 典型用途 |
|---|---|---|
| s (預設) | 所有消費者新大小 | 追蹤各堆/緩衝區池大小演變 |
| m | 所有消費者最小大小 | 檢查是否觸及下限 |
| b | 所有消費者收益數據 | 評估增減記憶體的預期效益 |
| o | DATABASE_MEMORY 調優資訊 | 監控總共享記憶體擴縮決策 |
4:以 4KB 頁面為單位顯示大小d:分號分隔輸出,便於匯入 Excel$ parseStmmLogFile.pl stmm.0.log mydbname s
[ MEMORY TUNER - LOG ENTRIES ]
[ Interv ] [ Date ] [ totSec ] [ secDif ] [ newSz ]
[ ] [ ] [ ] [ ] [ SHEAPTHRES_SHR PCKCACHESZ ]
[ 1 ] [ 02/01/2006 09:45:02 ] [ 76 ] [ 76 ] [ 31482 19438 ]
[ 2 ] [ 02/01/2006 09:46:03 ] [ 137 ] [ 61 ] [ 32482 18438 ]
解讀:第 1 次調優設定共享排序堆 31482、套件快取 19438;61 秒後第 2 次將 1000 頁從快取移給排序堆。
$ parseStmmLogFile.pl stmm.0.log mydbname o
[ MEMORY TUNER - DATABASE MEMORY AND OVERFLOW BUFFER TUNING - OG ENTRIES ]
[ Interv ][ Date ][ totSec ][ secDif ][ configMem ][ memAvail ][ setCfgSz ]
[ 1 ][ 02/01/2006 09:45:02 ][ 76 ][ 76 ][ N/A ][ N/A ][ N/A ]
[ 2 ][ 02/01/2006 09:46:03 ][ 137 ][ 61 ][ 4194304 ][ 1559966 ][ 62224 ]
欄位含義:configMem=系統總記憶體、memAvail=DB2 可用物理記憶體、setCfgSz=DATABASE_MEMORY 目前設定值。
$ parseStmmLogFile.pl stmm.0.log mydbname v
[ SORTHEAP TUNING - SORTHEAP CHANGE VALIDATION RECORDS ]
[ Date ][ totSec ][ secDif ][ SHEAPTHRES_SHR ][ OLD ][ NEW ][ min ][ max ]
[ 02/01/2006 14:51:01 ][ 184 ][ 184 ][ 11212 ][ 373 ][ 560 ][ 224 ][ 2243 ]
顯示 SORTHEAP 從 373 調至 560,STMM 計算的最小/最大合理值為 224/2243。
STMM 讓 DBA 免于手動調參,但日誌分析能力決定你能否信任它、驗證它、在異常時介入。掌握 db2diag 快速過濾與 parseStmmLogFile.pl 深度剖析,配合 -d 匯出數據建立監控儀表板,即可將自動調優從「信仰」轉為「可視化的治理」。