真實生產環境:AIX、8GB 記憶體、EMC 140GB、表結構四類 (業務表 300-400 張/主表 10 張 300萬列/索引表 10 張 1000萬列/系統表 100 張),核心查詢為索引表與主表關聯。專家提供存儲、OS、資料庫、SQL、監控五大維度具體可執行建議。
vmo -o minperm%=5 -o maxperm%=90 -o maxclient%=90 -o lru_file_repage=0 防止 JFS2 快取佔用記憶體導致 Paging Storm。chdev -l aio0 -a maxreqs=65536 -a minservers=20 -a maxservers=200vmo -o lgpg_regions=256 -o lgpg_size=16777216 (視實體 RAM 調整),減少 TLB Miss。db2 update db cfg for sample using SELF_TUNING_MEM ON
db2 update db cfg for sample using DATABASE_MEMORY AUTOMATICCHNGPGS_THRESH=60, NUM_IOCLEANERS=AUTOMATIC。db2set DB2_PARALLEL_IO=*。INTRA_PARALLEL=ON, MAX_QUERYDEGREE=ANY。db2advis -d sample -w workload.sql -l,依建議建立索引。RUNSTATS ON TABLE schema.* WITH DISTRIBUTION AND DETAILED INDEXES ALL,確保統計最新。db2exfmt / db2caem,重點消除 Residual Predicates (索引無法完全過濾、需再讀表過濾)。| 工具 | 關鍵指標 | 健康閾值 |
|---|---|---|
| topas / vmstat / iostat | CPU%, RunQ, %iowait, PgSpIn/Out, Disk Busy% | %iowait < 20%, PgSpIn/Out ≈ 0 |
| db2pd -bufferpools | Hit Ratio, Async Read/Write Ratio | Hit Ratio > 95% |
| db2pd -sort | Sort Overflow, Sort Heap Usage | Overflow = 0 |
| db2pd -locks | Lock Wait Time, Deadlocks, Escalations | Wait Time < 1s, Deadlocks = 0 |
| db2pd -tcbstats | Table Scan, Index Scan, Rows Read/Write | Index Scan 佔比 > 90% |
MONEY → DECIMAL(19,4), DATETIME → TIMESTAMP, UNIQUEIDENTIFIER → CHAR(16) FOR BIT DATA。ISNULL → COALESCE, GETDATE() → CURRENT TIMESTAMP, TOP n → FETCH FIRST n ROWS ONLY。RUNSTATS + REORGCHK + REBIND。BLOCKING ALL, DEFERPREP, KEEPDYNAMIC YES。系統性落地專家建議,配合持續監控體系,能將遷移後 DB2 效能穩定在目標 SLA 內,避免「上線後再調」的被動局面。