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

DB2 for SAP 應用程式 SQL 效能調優進階策略 (二):查詢改寫與優化參數微調

     編輯:DB2 教學

SAP BI 長跑查詢專屬調優入口

透過 YDB6BWEXT 報告提供的 QUERYOPTBEFORE / QUERYOPTAFTER 兩個增強點,可在 SAP BI Read Interface 產生 ADBC/原生 SQL 前後,動態注入優化提示 (如 OPTIMIZATION LEVEL)。實施需套用 SAP Note 1143736 (NW 7.0+) 或 872397 (舊版),並聯繫 SAP Development Support 取得實作指南。

查詢改寫黃金法則 (避開優化器陷阱)

反模式影響建議改寫
WHERE 條件含複雜運算式無法使用索引/統計移至應用層預算或建立產生欄 + 索引
JOIN 謂詞含運算式阻礙連結重排序確保兩邊欄位直接比對,資料型態一致
本地謂詞對欄位套用函數SARGABLE 失效改寫為範圍條件 (如 DATE(col) = ? → col BETWEEN ? AND ?)
連結欄位資料型態不符隱性轉換導致索引失效DDL 階段統一型態長度/編碼
非等值連結 (<>, !=, >, <)難以使用 Hash/Nest Loop 最佳化評估改為等值 + 範圍或應用層過濾
不必要的 DISTINCT額外排序/雜湊成本若 PK/FK 已保證唯一,移除 DISTINCT
多餘 OUTER JOIN擴大中間結果集改為 INNER JOIN 或移除無關聯表

分頁查詢最佳組合

SELECT ... FROM ...
WHERE ...
ORDER BY ...
FETCH FIRST 20 ROWS ONLY
OPTIMIZE FOR 20 ROWS;
  • FETCH FIRST N ROWS ONLY:限制回傳行數,優化器可選擇「首列快速回應」計畫。
  • OPTIMIZE FOR N ROWS:引導優化器傾向 Nested Loop + 索引存取,而非 Hash Join 全掃描。
  • 兩者必須搭配使用才能發揮最大效果。

星狀結構查詢檢核清單

  • 事實表與維度表連結鍵皆有索引 (通常為單欄 FK 索引)。
  • 維度表篩選條件高選擇性 (優化器才會選擇星狀連結)。
  • 避免在星狀查詢中混入非標準連結 (如多對多橋接表)。

SAP 專屬優化參數微調

參數/登錄變數適用場景建議值/策略
DB2_REDUCED_OPTIMIZATION極複雜查詢編譯過久ON (降低優化積極度,縮短編譯時間)
DB2_WORKLOADSAP 應用專用ANALYTICS (BI/OLAP) 或 OLTP (ERP),自動調整一組預設參數
OPTIMIZATION LEVEL (SAP: USE_OPTLEVEL)特定語句計畫不佳語句層級覆蓋 (1-7),預設 5;僅作短期權宜
REOPT (BIND 選項)參數化查詢值分布傾斜嚴重ONCE 或 ALWAYS 配合輸出變數使用

統計資訊管理鐵律

  1. 啟用自動統計收集 (Auto Stats / Real-time Stats),SAP 環境強制建議。
  2. 高階統計:對傾斜欄位收集分布統計 (WITH DISTRIBUTION),對相關欄位收集多欄統計 (ON COLUMNS (A,B))。
  3. 統計視圖:針對 SAP BI 高基數/傾斜表建立統計視圖,提供優化器更精準基數估算。
  4. 最小化 RUNSTATS 衝擊:採樣、非高峰時段、增量統計 (DB2 11.1+)。
  5. 嚴禁手動 UPDATE STATISTICS:易導致不一致,優化器誤判。

SAP BI 聚集與 Open SQL 參數化

  • 善用 SAP BI Aggregate (預先彙總 Cube) 將查詢導向較小資料集。
  • Open SQL 中使用 DB2 專屬提示參數 (OPT_FOR_ROWS, USE_OPTLEVEL, &SUBSTITUTE LITERALS& 等) 僅作緊急臨時方案,長期應修正 ABAP 邏輯或建立適當索引。
  • FOR ALL ENTRIES 查詢:依內表大小與連結複雜度,透過 rsdb/prefer_in_itab_opt (IN LIST)、rsdb/prefer_join (JOIN)、rsdb/prefer_union_all (UNION ALL) 三大參數控制 SQL 生成策略,僅在詳細分析或 SAP 建議下調整。

最後手段:優化配置檔

當所有常規手段 (索引、統計、改寫、參數) 均無法達標,才考慮建立 OPTIMIZATION PROFILE 強制指定存取計畫,需極謹慎維護,升級風險高。

DB2 for SAP 調優策略概覽

總結

DB2 for SAP 效能調優核心在於:「查詢改寫避開反模式 → 統計資訊完備自動化 → 參數微調精準施策 → 最後才動用 Profile」。建立標準化調優清單並納入變更管理流程,才能持續保障 SAP 系統資料庫層效能穩定。

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