cpu代表什么意思 pu代表什么意思( 五 )


基于語法的改寫基于規則的改寫基于結構的改寫基于語法的改寫
文本匹配或者語法匹配是最簡單的改寫 ***  , 將查詢的文本與物化視圖的文本或語法樹進行比較 , 完全匹配可以進行改寫 。這種改寫只能匹配完整的查詢語句或子語句 , 細微的變化就會導致查詢無法改寫 , 適用的范圍很小 ?;谡Z法的改寫雖然簡單 , 但是效率很高 , 改寫的成本可以忽略不計 。
基于規則的改寫
【cpu代表什么意思pu代表什么意思】基于規則的改寫和其他優化器規則相同 , 針對不同 Pattern 的查詢和視圖編寫不同的規則 , 尋找等價的替代關系樹 。
最簡單的一條規則就是直接比較子查詢和視圖的計劃 , 如果相同就能改寫 。高級的改寫規則不需要物化視圖等同于被替換的計劃 , 會嘗試計算補償謂詞 , 構建等價查詢表達式 。例如 Join 改寫 , 比較 Join 查詢的子表達式是否和視圖 Join 的某個子表達相同或者能否從中計算出來 , 每一個Join子表達式都存在映射關系 , 最后檢查補償表達式能否從視圖中計算得到 。
基于規則的改寫可以實現大量重寫 , 實現也比較簡單 , 改寫匹配速度快 , 但是也存在局限性 。這種改寫依賴轉換規則來尋找等價關系 , 因此需要窮舉所有可能的轉換關系來實現復雜視圖的重寫 。一些復雜的視圖不可能窮舉所有的等價關系 , 例如存在很多的 Join 聯接或者復雜的 Project 關系 , 基于規則的改寫適用的范圍取決于規則的數量 。
基于結構的改寫
基于結構的改寫與基于規則的改寫相反 , 通過提取查詢中的特征 , 使用一套規則進行匹配改寫 。優化器將查詢表示為 SPJG 標準形式 (Join-Select-Project-GroupBy) , 提取查詢中的 Join , Projects , Filters , Grouping 和 Aggregations 五種表達式 , 分別與物化視圖對應的表達式進行匹配和改寫 。
這個 *** 是由微軟在 2001 年 SIGMOD 論文《Optimizing queries using materialized views: A practical, scalable solution》系統化的提出 。這種 *** 可以改寫包含可以改寫包含 Join , Filter , Project 的任意查詢的 ***  , 運用一系列的步驟匹配并得到補償表達式 。還可以進一步改寫含有 Aggreagtion 的查詢 , 在需要時添加 Aggregation 節點返回進一步匯總的結果 。
基于結構的改寫很容易擴展 , 例如改寫 Outer Join 和子查詢等 , 可以完成幾乎全部的改寫 。但是搜索成本較高 , 尤其是在查詢復雜 , 改寫嘗試次數很多的情況下 。
參考資料
Goldstein J, Larson P ?. Optimizing queries using materialized views: a practical, scalable solution[J]. ACM SIGMOD Record, 2001, 30(2): 331-342.Bello R G, Dias K, Downing A, et al. Materialized views in Oracle[C]//VLDB. 1998, 98: 24-27.Zhou J, Larson P A, Goldstein J, et al. Dynamic materialized views[C]//2007 IEEE 23rd International Conference on Data Engineering. IEEE, 2007: 526-535.Jindal A, Qiao S, Patel H, et al. Computation reuse in*** ytics job service at microsoft[C]//Proceedings of the 2018 International Conference on Management of Data. 2018: 191-203.Calcite: Materialized View.Oracle: Database Data Warehousing Guide: Advanced Query Rewrite for Materialized Views.Redshift: Automatic query rewriting to use materialized views.Snowflake: Creating and Working With Materialized Views.作者:阿里云數據庫OLAP產品部 云曦
本文為阿里云原創內容 , 未經允許不得轉載 。

推薦閱讀