首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

使用 db2look 重建優化器存取路徑(一):核心指令與儲存佈局擷取

     編輯:DB2 教學

問題背景

生產環境出現效能問題(惡劣存取路徑、SQL0901N、實例崩潰),需在測試環境重現相同優化器行為以進行調優,但測試環境往往無法複製生產級硬體、資料量。

db2look 關鍵指令組合

# 1. 擷取儲存佈局(緩衝池、表空間、資料庫分區群)
db2look -d <dbname> -l -o storage.out

# 2. 擷取配置參數與註冊表變數(含 db2fopt 指令)
db2look -d <dbname> -f -fd -o config.out

# 3. 擷取所有物件 DDL、統計資料、授權
db2look -d <dbname> -e -a -m -o db2look.out

# 4. 僅擷取特定資料表
db2look -d <dbname> -e -a -m -t table1 table2 ... -o table.ddl

參數詳細說明

參數用途
-d指定資料庫名稱(必填)
-l產生資料庫佈局:分區群、緩衝池、表空間定義
-f擷取 DBM/DB CFG 參數與註冊表變數
-fd產生 db2fopt 指令,模擬緩衝池/排序堆大小
-e產生 DDL(含統計資料更新指令)
-a所有結構描述
-m包含 RUNSTATS 統計資料更新指令(關鍵)
-t指定資料表清單
-o輸出導向檔案

儲存佈局關鍵參數(必須一致)

PREFETCHSIZE 16
EXTENTSIZE 16
OVERHEAD 12.670000
TRANSFERRATE 0.180000
  • 表空間類型(DMS/SMS)必須相同。
  • 多重分區環境:邏輯分區數需一致,物理機器數可不同。
  • 若測試機記憶體不足,使用 db2fopt 告知優化器「假想」緩衝池大小。

配置參數輸出範例

UPDATE DBM CFG USING cpuspeed 6.523521e-07;
UPDATE DBM CFG USING intra_parallel NO;
!db2fopt SAMPLE update opt_buffpage 50000;
!db2fopt SAMPLE update opt_sortheap 10000;
UPDATE DB CFG FOR SAMPLE USING locklist 1000;
UPDATE DB CFG FOR SAMPLE USING dft_queryopt 5;
!db2set DB2_ANTIJOIN=yes;
!db2set DB2_INLIST_TO_NLJN=yes;

db2fopt 指令讓優化器使用指定緩衝池/排序堆大小,而非實際計算值,解決測試機資源不足問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved