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

資料庫物理優化:啟發式規則與代價模型驅動的存取路徑選擇

     編輯:DB2 教學

資料庫物理優化:啟發式規則與代價模型驅動的存取路徑選擇

代數優化只調整操作次序,物理優化需從**多條存取路徑**中選擇代價最低者。核心依據:啟發式規則 (RBO) 與 代價估算 (CBO)。

一、選擇操作啟發式規則

場景規則
小關係全表掃描
大關係 + 主鍵=值主鍵索引 (唯一,≤1 行)
大關係 + 非主屬性=值 + 有索引選擇率 <10% → 索引掃描;否則全表掃描
大關係 + 非等值/範圍 + 有索引選擇率 <10% → 索引掃描;否則全表掃描
AND 合取條件有組合索引優先;單列索引可用索引合併;否則全表
OR 析取條件通常全表掃描

二、連接操作啟發式規則

  1. 兩表已按連接屬性排序 → **排序-合併**。
  2. 一表有連接屬性索引 → **索引連接**。
  3. 以上皆無,一表較小 → **Hash Join**。
  4. 退而求其次 → **嵌套循環**,**小表作外層** (塊數少者),代價 Br + (Br/(K-1))*Bs。

三、CBO 統計信息 (數據字典)

  • 表:元組數 N、長度 l、塊數 B、溢出塊 BO。
  • 列:不同值數 m、選擇率 f (均勻則 1/m)、最大/最小值、是否有索引、索引類型。
  • 索引 (B+樹):層數 L、不同鍵值數、選擇基數 S、葉節點數 Y。

四、代價估算公式速查

算法代價公式
全表掃描cost = B (碼=值 平均 B/2)
B+樹索引 (碼=值)cost = L + 1
B+樹索引 (非碼=值, 選擇基數 S)最壞 cost = L + S
B+樹索引 (範圍 >/>=/cost = L + Y/2 + B/2
嵌套循環連接cost = Br + (Br/(K-1))*Bs (+ 寫回結果塊數)
排序-合併連接 (已排序)cost = Br + Bs + 結果塊數
排序-合併連接 (需排序)+ (2*B)*(1+log2B) 排序代價

五、實戰建議

  • 複雜查詢**不要全依賴優化器**,需理解 RBO/CBO 規律,編寫友好 SQL。
  • 學會讀 EXPLAIN PLAN,分析實際執行策略。
  • 統計信息定期 ANALYZE/DBMS_STATS 更新,避免 CBO 誤判。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved