針對 Unix/Windows/OS/2 環境下的 DB2 UDB 電商 OLTP 應用,彙整十大最關鍵效能改善技巧,按重要性遞增排序(第 1 為最關鍵)。
db2 "update monitor switches using
lock ON sort ON bufferpool ON uow ON
table ON statement ON"
未開啟無法獲取效能數據,為所有調優基礎。
db2 "get snapshot for database manager"
檢查 Agents waiting for a token、Agents stolen 若非 0,需增加 MAXAGENTS/MAX_COORDAGENTS。
db2 "get snapshot for database on DBNAME"
# 檢查 Database files closed > 0 則需調大
db2 "update db cfg for DBNAME using MAXFILOP N"
頻繁開關檔案嚴重拖累 SQL 回應時間。
預設 -1(無限等待)對 OLTP 災難性。建議設 10-15 秒,並監控鎖等待、鎖清單記憶體使用率(超 50% 需加大 LOCKLIST)。
PREFETCHSIZE = EXTENTSIZE × 容器數db2 "list tablespaces show detail"Sort overflows 比率:(Sort overflows × 100) / Total sorts > 3% 表示嚴重排序問題SortsPerTX > 5 可能導致 CPU 瓶頸,需優化 SQL/索引/叢集# 取得交易總數
db2 "get snapshot for database on DBNAME"
# 取得各表讀取行數
db2 "get snapshot for tables on DBNAME"
# 計算 RowsPerTX = Rows Read / Transactions
OLTP 每事務讀取 1-20 行屬正常;成百上千行表示掃描,需建索引或 RUNSTATS。
對每個表空間評估:平均讀/寫時間、非同步/同步 I/O 比例、緩衝池命中率、每分鐘物理頁讀取、每事務邏輯/物理讀取。識別最慢表空間並檢視容器分佈、存取屬性一致性。
IBMDEFAULTBP:系統目錄 (SYSCATSPACE)BP_TEMP:暫存表空間 (TEMPSPACE)BP_RAND:隨機存取表空間 (OLTP 核心表)BP_SEQ:循序存取表空間 (資料倉儲、索引掃描)BP_HOT, BP_IX)單一惡劣 SQL 可摧毀整個系統。DBA 面臨三條路:加/改索引、改叢集、更新統計資訊。實際成本 = 單次執行成本 × 執行頻率。
標準流程:
db2evmon 格式化輸出最佳效能需硬體、配置、SQL 三位一體。電商環境變動快,需定期微調。DBA 的工作永遠做不完!