傳統成本基礎優化器 (CBO) 運作流程
- SQL 解析 → 查詢重寫與運算式評估 → 產生候選執行計畫集合(計畫空間 PlanSpace 大小受限)。
- 對每個候選計畫估算成本(依統計資訊、索引、硬體參數)。
- 選擇最低成本計畫執行。
兩大無法解決的根本缺陷
- 計畫空間不完整:優化器僅搜尋預定義規則產生的計畫,無法遍歷所有語義等價的 SQL 寫法。
- 成本估算不準:統計資訊過時、資料分佈傾斜、相關性忽略,導致錯誤選擇。
結果:資深開發人員常能手工重寫 SQL 達到數千倍效能提升,優化器卻永遠找不到該計畫。
新概念:外部 SQL 重寫器 (External SQL Rewriter, ESR)
- 在編譯期/部署期離線運行,不受即時優化時間限制(理論上可嘗試無限候選)。
- 結合資料庫特性知識庫,產生語義等價但語法不同的 SQL 變體。
- 重寫後的 SQL 取代原始碼中的原 SQL,執行時由原生優化器產生更優計畫。
- 打破 PlanSpace 限制,規避不準成本估算,將人類優化經驗演算法化。
ESR 三大優勢
- 時間預算無上限:可花費數小時優化關鍵 SQL,優化器僅有毫秒級預算。
- 零額外統計負擔:不需額外收集統計資訊,避免加重優化器負載。
- 靈活擴展:知識庫可持續擴充,搜尋空間可透過硬體升級擴大,無架構侷限。
ESR 運作條件
- 繞過內部優化器限制(需深度理解目標資料庫優化規則)。
- 具備 SQL 重寫智慧與目標資料庫特性知識庫。
國內已有成熟產品:Lecco Technology 的 Lecco SQL Expert(盈動華建代理)。
結語
優化器非萬能,ESR 將優化前移至開發階段,以計算力換取執行效能,是解決複雜 SQL 效能難題的新範式。