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

使用 db2look 重建優化器存取路徑(六):併發 RUNSTATS 導致統計不一致的實戰案例

     編輯:DB2 教學

場景還原

表含 1,000,000 列,PK 為整數欄。執行 RUNSTATS WITH DISTRIBUTION AND INDEXES ALL ALLOW WRITE ACCESS 期間:

  1. 收集表統計時,新增 100,000 列 → CARD = 1,100,000。
  2. 收集 PK 索引統計時,再新增 10,000 列 → FIRSTKEYCARD = 1,110,000。

結果:FIRSTKEYCARD (1,110,000) > CARD (1,100,000),UPDATE SYSSTAT.INDEXES 失敗,報 SQL1227N rc=8。

修正策略

  • 方案 A:將 FIRSTKEYCARD 改為 1,100,000(等於 CARD)。
  • 方案 B:將 CARD 改為 1,110,000(等於 FIRSTKEYCARD)。

任選其一,確保邏輯一致後重跑 db2look.out 至成功。

其他常見不一致

  • FIRST2KEYCARD > FIRSTKEYCARD
  • FULLKEYCARD > CARD
  • NUMRIDS > CARD
  • 分區表各分區統計不一致

實務建議

  1. 生產環境執行 RUNSTATS 時盡量避開寫入高峰,或使用 ALLOW READ ACCESS。
  2. 測試環境重建時,逐行檢查 db2look_output.out 所有 SQL1227N,修正統計值再重跑。
  3. 所有更新指令成功前,優化器行為不可信。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved