在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Cascades查詢優化器基本原理分析

OSC開源社區 ? 來源:OSC開源社區 ? 2023-12-15 09:38 ? 次閱讀

數據庫中查詢優化器是數據庫的核心組件,其決定著 SQL 查詢的性能。Cascades 優化器是 Goetz 在 volcano optimizer generator 的基礎上優化之后誕生的一個搜索框架。 本期技術貼將帶大家了解 Cascades 查詢優化器。首先介紹 SQL 查詢優化器,接著分析查詢優化基本原理,最后對 Cascades 查詢優化器進行重點介紹。

一、SQL 查詢優化器

用戶與數據庫交互時只需要輸入聲明式 SQL 語句,數據庫優化器則負責將用戶輸入的 SQL 語句進行各種規則優化,生成最優的執行計劃,并交由執行器執行。優化器對于 SQL 查詢具有十分重要的意義。 如圖 1 所示,SQL 語句經過語法和詞法解析生成抽象語法樹(AST),經過基于規則的查詢優化(Rule-Based Optimizer)基于代價的查詢優化(Cost-Based Optimizer)生成可執行計劃。

09647b4e-9a70-11ee-8b88-92fbcf53809c.png

圖 1

基于規則的優化算法:基于規則的優化方法的要點在于結構匹配和替換。應用規則的算法一般需要先在關系代數結構上匹配一部分局部的結構,再根據結構的特點進行變換乃至替換操作。

基于成本的優化算法:現階段主流的方法都是基于成本(Cost)估算的方法。給定某一關系代數代表的執行方案,對這一方案的執行成本進行估算,最終選擇估算成本最低的方案。盡管被稱為基于成本的方法,這類算法仍然往往要結合規則進行方案的探索。基于成本的方法其實是通過不斷的應用規則進行變換得到新的執行方案,然后對比方案的成本優劣進行最終選擇。

二、查詢優化的基本原理

優化器一般由三個組件組成:統計信息收集開銷模型計劃列舉。 如圖 2 所示,開銷模型使用收集到的統計信息以及構造的不同開銷公式,估計某個特定查詢計劃的成本,幫助優化器從眾多備選方案中找到開銷最低的計劃。

097b36d6-9a70-11ee-8b88-92fbcf53809c.png

圖 2 SQL 語句查詢優化基于關系代數這一模型:

SQL 查詢可以轉化為關系代數;

關系代數可以進行局部的等價變換,變換前后返回的結果不變但是執行成本不同;

通過尋找執行成本最低的關系代數表示,我們就可以將一個 SQL 查詢優化成更為高效的方案。

尋找執行成本最低的關系代數表示,可以分為基于動態規劃的自底向上基于 Cascades/Volcano 的自頂向下兩個流派。

自底向上搜索:從葉子節點開始計算最低成本,并利用已經計算好的子樹成本計算出母樹的成本,就可以得到最優方案;

自頂向下搜索:先從關系算子樹的頂層開始,以深度優先的方式來向下遍歷,遍歷過程中進行剪枝。

自底向上的優化器從零開始構建最優計劃,這類方法通常采用動態規劃策略進行優化,采用這類方法的優化器包括IBMSystem R。自頂向下的優化策略的優化器包括基于 Volcano 和 Cascades 框架的優化器。

三、Cascades 查詢優化器

Cascades 查詢優化器采用自頂向下的搜索策略,并在搜索過程中利用 Memo 結構保存搜索的狀態。

Cascades 關鍵組件構成:

Expression:Expression 表示一個邏輯算子或物理算子。如 Scan、Join 算子;

Group:表示等價 Expression 的集合,即同一個 Group 中的 Expression 在邏輯上等價。Expression 的每個子節點都是以一個 Group 表示的。一個邏輯算子可能對應多個物理算子,例如一個邏輯算子 Join(a,b),它對應的物理算子包括{HJ(a, b), HJ(b, a), MJ(a, b), MJ(b, a), NLJ(a, b), NLJ(b, a)}。我們將這些邏輯上等價的物理算子稱為一個 Group(組)。注:HJ 表示 HashJoin 算子,MJ 表示 MergeJoin 算子,NLJ 表示 NestLoopJoin 算子;

Memo:由于 Cascades 框架采用自頂向下的方式進行枚舉,因此,枚舉過程中可能產生大量的重復計劃。為了防止出現重復枚舉,Cascades 框架采用 Memo 數據結構。Memo 采用一個類似樹狀(實際是一個圖狀)的數據結構,它的每個節點對應一個組,每個組的成員通過鏈表組織起來;

Transformation Rule:是作用于 Expression 和 Group 上的等價變化規則,用來擴大優化器搜索空間。

Cascades 首先將整個 Operator Tree 按節點拷貝到一個 Memo 的數據結構中,Memo 由一系列的 Group 構成,每個算子放在一個 Group,對于有子節點的算子來說,將原本對算子的直接引用,變成對 Group 的引用。

098aa72e-9a70-11ee-8b88-92fbcf53809c.png

圖 3 如圖 3 所示,生成該語法樹的 Memo 初始結構。Memo 結構中一個圓角框代表一個算子,圓角框右下角是對其 Children’s Groups 的引用,左下角是唯一標識符。生成初始的 Memo 結構后,可以采用 transform rule 進行邏輯等價轉換,規則如下:

對于一個邏輯算子,其所有基于關系代數的等價表達式保存在同一個 Group 內,例如 join(A,B) -> join(B,A);

在一個 Group 內,對于一個邏輯算子,會生成一個或多個物理算子,例如 join -> hash join,merge join,NestLoop join;

一個 Group 內,一個算子,其輸入(也可以理解為subplan)可以來自多個 Group 的表達式。

在圖 4 中,描述了一個部分擴展的 Memo結構,與圖 1 中的初始 Memo 相比,在同一個 Group 內,增加了等價的邏輯算子,以及對應的物理算子。

098e86c8-9a70-11ee-8b88-92fbcf53809c.png

圖 4 在探索的過程中,優化器就會通過開銷模型 Coster 借助統計信息來計算子步驟的開銷,遍歷完每個 Memo Group之后,歸總得到每個完整計劃的總開銷,最終選擇 Memo 中開銷最低的計劃。

099fd8c4-9a70-11ee-8b88-92fbcf53809c.png

圖5 圖 5 中有三個 Group,分別對應三個邏輯算子:Join(a, b), GET(a) 和 GET(b)。Group 1(Group 2)中包含了所有對應 GET(a) (GET(b))的物理算子,我們可以估算每個物理算子的代價,選取其中最優的算子保留下來。 為了防止枚舉過程出現重復枚舉某個表達式,Memo 結構體中還包含一個哈希表(exprHT),它以表達式為哈希表的鍵,用來快速查找某個表達式是否已經存在于 Memo 結構體中。

Cascades 采用自頂向下的方式來進行優化,以計劃樹的根節點為輸入,遞歸地優化每個節點或表達式組。如圖所示,整個優化過程從 Group 0 開始,實際上要先遞歸地完成兩個子節點(Group 1 和 Group 2)的優化。 因此,實際的優化完成次序是 Group 1 -> Group2 -> Group 0。在優化每個 Group 時,依次優化每個組員;在優化每個組員時,依次遞歸地優化每個子節點。依次估算當前組里每個表達式 e 的代價 cost(e),選擇最低得代價結果保存在 bestHT 中。優化結束時,查詢 Join(a,b)對應的 Memo 結構體,獲取最低的執行計劃。

審核編輯:黃飛

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • SQL
    SQL
    +關注

    關注

    1

    文章

    780

    瀏覽量

    44739
  • 數據庫
    +關注

    關注

    7

    文章

    3885

    瀏覽量

    65641
  • 數據結構
    +關注

    關注

    3

    文章

    573

    瀏覽量

    40542

原文標題:深度解讀Cascades查詢優化器

文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    LLC電路基本原理分析及公式推導(ST)

    LLC電路基本原理分析及公式推導(ST)
    發表于 02-02 08:50

    網絡分析基本原理,怎么使用網絡分析儀?

    網絡分析基本原理網絡分析儀的測量方法網絡分析儀的結構怎么使用網絡分析儀?
    發表于 04-12 06:57

    功率分析儀的測量基本原理是什么?

    最常用的有功功率測量方法是什么?功率分析儀的測量基本原理是什么?有功功率的測量方法在變頻的應用是什么?
    發表于 05-08 08:36

    電機轉動的基本原理是什么?

    電機轉動的基本原理是什么?電機運動的基本原則有哪些?
    發表于 07-21 07:59

    線性電源的基本原理是什么

    講解模塊原理圖-PDF、原理圖庫、PCB庫下載基本原理線性電源的基本原理是市電經過一個工頻變壓降壓成低壓交流電之后,通過整流和濾波形成直流電,最后通過穩壓電路輸出穩定的低壓直流電。線性電源的優點是...
    發表于 07-30 07:47

    無線充電的基本原理是什么

    一 、無線充電基本原理無線充電的基本原理就是我們平時常用的開關電源原理,區別在于沒有磁介質耦合,那么我們需要利用磁共振的方式提高耦合效率,具體方法是在發送端和接收端線圈串并聯電容,是發送線圈處理諧振
    發表于 09-15 06:01

    模數轉換(ADC)的基本原理是什么?

    模數轉換(ADC)的基本原理是什么?常用的幾種ADC類型的基本原理及特點是什么?
    發表于 09-28 08:21

    通用計時基本原理是什么?

    通用計時基本原理是什么?
    發表于 01-21 06:30

    顯示EDID 基本原理

    顯示EDID 基本原理
    發表于 07-15 16:05 ?77次下載

    計數基本原理介紹

    介紹計數基本原理(如異步,同步二進制計數,以及對誤差,性能的分析
    發表于 12-17 14:52 ?3次下載

    鎖相環路的基本原理和性能分析

    鎖相環路的基本原理和性能分析,有需要的下來看看
    發表于 08-09 15:45 ?0次下載

    步進馬達基本原理

    步進馬達基本原理步進馬達基本原理步進馬達基本原理
    發表于 11-30 11:55 ?8次下載

    主從sr觸發基本原理分析

    主從觸發的工作分兩步進行。第一步,當CP由0跳變到1及CP=1期間,主觸發接收輸入信號激勵,狀態發生變化;而主從sr觸發基本原理分析
    的頭像 發表于 02-08 14:07 ?6.2w次閱讀
    主從sr觸發<b class='flag-5'>器</b><b class='flag-5'>基本原理</b><b class='flag-5'>分析</b>

    LLC電路基本原理分析及公式推導

    LLC電路基本原理分析及公式推導說明。
    發表于 04-29 14:42 ?87次下載

    了解矢量網絡分析基本原理

    了解矢量網絡分析基本原理
    發表于 11-02 15:11 ?1次下載
    主站蜘蛛池模板: 色多多高清在线观看视频www | 下农村女人一级毛片 | 亚洲成年人网 | 久热久操 | 成人在线免费网站 | 人碰人操| 天天色天天综合网 | 婷婷亚洲综合一区二区 | 在线视频毛片 | a资源在线观看 | 亚洲haose在线观看 | 亚洲欧洲无码一区二区三区 | 丝袜紧身裙国产在线播放 | 丁香婷婷电影 | 在线观看免费午夜大片 | 欧洲人体超大胆露私视频 | 精品国产免费久久久久久婷婷 | 亚洲第一页国产 | 又粗又大的机巴好爽欧美 | 丁香婷婷在线视频 | 五月天婷婷视频在线观看 | 久久影视一区 | 色五月在线视频 | 日本aaaaa毛片在线视频 | 亚洲男人天堂网址 | 伊人7| 国产handjob手交在线播放 | 天天舔天天色 | 国产午夜毛片一区二区三区 | 人人草人人干 | 免费观看午夜在线欧差毛片 | 农村苗族一级特黄a大片 | 亚洲成人三级 | 亚洲欧美高清在线 | 国产一区二区影院 | 一级特黄性生活大片免费观看 | 亚洲精品精品一区 | 色盈盈| 青青操久久| 午夜精品网 | 人人艹人人插 |