在無法直接存取生產資料的情況下,透過 db2look 擷取生產環境的資料庫物件定義、統計資訊、配置參數,套用至測試環境,使優化器產生相同的存取計劃,從而重現與調效 SQL 效能問題。
db2look,以確保取得正確的緩衝區池、DB CFG、DBM CFG 等節點級配置。db2look -d <資料庫名> -l -o storage.out
-l:產生表空間、緩衝區池、節點群組、資料庫分區群組的 DDL。db2look -d <資料庫名> -f -fd -o config.out
-f:擷取 DB CFG 參數。-fd:擷取 DBM CFG 參數與緩衝區池詳細狀態(如 NUMBLOCKPAGES、BLOCKSIZE 等)。db2look -d <資料庫名> -e -a -m -t TAB1 TAB2 TAB3 -o db2look.out
-e:產生物件 DDL(CREATE TABLE、INDEX、VIEW、MQT 等)。-a:包含所有綱要物件。-m:關鍵參數,輸出 UPDATE SYSSTAT... 陳述式,寫入統計資訊至系統目錄表。-t:指定目標資料表(可多個,空白分隔)。storage.out(修改後)、config.out、db2look.out。RUNSTATS 更新時間戳記(可選)。db2exfmt 取得存取計劃,與生產環境比對:db2exfmt -d <資料庫名> -1 -g -o prod_plan.txt # 生產
db2exfmt -d <資料庫名> -1 -g -o test_plan.txt # 測試
diff prod_plan.txt test_plan.txt
若測試環境啟用 AUTO_RUNSTATS,自動收集會覆蓋 db2look -m 寫入的統計值。解決辦法:
AUTO_RUNSTATS。db2nodes.cfg 節點對應關係。-a 參數已涵蓋)。CURRENT EXPLAIN MODE 設定一致。-h 參數收集直方圖統計。