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

DB2 效能調優核心篇:資料庫設計與配置最佳實務

     編輯:DB2 教學

利用約束條件提升查詢優化

  • 定義 唯一性、檢查、參考完整性 約束,提供語義資訊給優化器
  • 優化器可:重寫查詢評估 JOIN、透過 JOIN 消除聚合與 FETCH FIRST N ROWS、移除不必要的 DISTINCT
  • 資訊約束:應用程式自行保證關聯性時使用,避免強制約束在大量更新時的高額系統開銷

範例:參考完整性約束消除 JOIN


-- DAILY_SALES.CUST_KEY 參考 CUSTOMER.CUST_KEY
-- 建立資訊約束後,以下查詢自動消除 CUSTOMER 表 JOIN
SELECT AMT_SOLD, SALE_PRICE, PROD_DESC
FROM DAILY_SALES, PRODUCT, CUSTOMER
WHERE DAILY_SALES.PROD_KEY = PRODUCT.PRODKEY
  AND DAILY_SALES.CUST_KEY = CUSTOMER.CUST_KEY

前提:應用程式必須強制執行資訊約束,否則查詢結果可能不正確。

複雜查詢環境中的 REOPT 綁定選項策略

選項適用場景運作機制
REOPT(ALWAYS)複雜查詢負載、輸入變數值已知延遲編譯至 OPEN/EXECUTE,變數值傳給編譯器計算精確選擇率
REOPT(ONCE)首個輸入變數具代表性、編譯開銷敏感首次綁定時編譯,後續重用首次查詢片段

特殊暫存器查詢應用


WHERE TRANS_DATE = CURRENT DATE - 30 DAYS

搭配 REOPT(ALWAYS) 可獲得最佳存取計劃。

決策矩陣

  • OLTP 環境:簡單查詢、重複執行 → 預設動態 SQL 快取最佳
  • BI/複雜查詢:不重複、計劃選擇複雜 → REOPT(ALWAYS)
  • 混合負載:挑選關鍵查詢用 REOPT(ONCE) 平衡編譯開銷與計劃品質
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved