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

DB2 執行計劃優化實戰:統計信息維護與 LOAD 技巧(下)

     編輯:DB2 教學

前言

接續上篇,本文深入探討通過 REORGCHK、LOAD 統計選項及 db2look 工具來精準控制統計信息,從而穩定並優化 SQL 執行計劃。

一、 分類執行 REORGCHK 更新統計

REORGCHK 不僅能檢查表是否需要重組,配合 UPDATE STATISTICS 選項還可同步更新統計信息。建議分別針對系統表與用戶表執行,以減少鎖衝突與耗時。

1. 針對系統表

db2 reorgchk update statistics on table system

2. 針對用戶表

db2 reorgchk update statistics on table user

運維建議: 大數據量環境下耗時較長,請安排在業務低峰期執行。

二、 關閉自動統計收集(DB2 8.2+)

DB2 8.2 引入自動維護功能(AUTO_MAINT, AUTO_TBL_MAINT, AUTO_RUNSTATS),雖方便但會帶來額外負載。生產環境建議關閉,改為手動排程控制:

db2 update db cfg using AUTO_MAINT off AUTO_TBL_MAINT off AUTO_RUNSTATS off

三、 利用 LOAD 命令同步生成統計信息

LOAD 是高性能批量數據加載工具(不記日誌,速度極快)。在加載數據時指定 STATISTICS 選項,可讓優化器即刻獲得最新統計信息,無需事後再跑 RUNSTATS。

1. 生成詳細統計(含分佈與索引細節)

LOAD FROM mobile_number.del OF DEL REPLACE INTO mobile
STATISTICS YES WITH DISTRIBUTION AND DETAILED INDEXES ALL

2. 生成基礎統計(表與所有索引)

LOAD FROM mobile_number.del OF DEL REPLACE INTO mobile
STATISTICS YES AND INDEXES ALL

3. DB2 8.2 新特性:使用統計配置文件

預先定義統計收集配置文件,加載時直接引用:

LOAD FROM mobile_number.del OF DEL REPLACE INTO mobile
STATISTICS USE PROFILE

四、 db2look:統計信息遷移利器

db2look 可提取數據庫對象的 DDL 及統計信息,是跨環境(如開發庫→生產庫)保持執行計劃一致的關鍵工具。

操作流程:

  1. 源環境收集統計並導出:
    db2 runstats on table <Schema>.<表名>
    db2look -d <數據庫> -t <表名> -m -o statis.sql

    輸出文件 statis.sql 包含更新系統編目表統計字段的 UPDATE 語句。

  2. 目標環境應用統計:
    db2 -svtf statis.sql

此法能確保不同環境下優化器看到相同的數據分佈特徵,從而生成一致的訪問路徑。

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