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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Cascades查詢優(yōu)化器基本原理分析

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

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

一、SQL 查詢優(yōu)化器

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

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

圖 1

基于規(guī)則的優(yōu)化算法:基于規(guī)則的優(yōu)化方法的要點(diǎn)在于結(jié)構(gòu)匹配和替換。應(yīng)用規(guī)則的算法一般需要先在關(guān)系代數(shù)結(jié)構(gòu)上匹配一部分局部的結(jié)構(gòu),再根據(jù)結(jié)構(gòu)的特點(diǎn)進(jìn)行變換乃至替換操作。

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

二、查詢優(yōu)化的基本原理

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

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

圖 2 SQL 語句查詢優(yōu)化基于關(guān)系代數(shù)這一模型:

SQL 查詢可以轉(zhuǎn)化為關(guān)系代數(shù);

關(guān)系代數(shù)可以進(jìn)行局部的等價(jià)變換,變換前后返回的結(jié)果不變但是執(zhí)行成本不同;

通過尋找執(zhí)行成本最低的關(guān)系代數(shù)表示,我們就可以將一個(gè) SQL 查詢優(yōu)化成更為高效的方案。

尋找執(zhí)行成本最低的關(guān)系代數(shù)表示,可以分為基于動(dòng)態(tài)規(guī)劃的自底向上基于 Cascades/Volcano 的自頂向下兩個(gè)流派。

自底向上搜索:從葉子節(jié)點(diǎn)開始計(jì)算最低成本,并利用已經(jīng)計(jì)算好的子樹成本計(jì)算出母樹的成本,就可以得到最優(yōu)方案;

自頂向下搜索:先從關(guān)系算子樹的頂層開始,以深度優(yōu)先的方式來向下遍歷,遍歷過程中進(jìn)行剪枝。

自底向上的優(yōu)化器從零開始構(gòu)建最優(yōu)計(jì)劃,這類方法通常采用動(dòng)態(tài)規(guī)劃策略進(jìn)行優(yōu)化,采用這類方法的優(yōu)化器包括IBMSystem R。自頂向下的優(yōu)化策略的優(yōu)化器包括基于 Volcano 和 Cascades 框架的優(yōu)化器。

三、Cascades 查詢優(yōu)化器

Cascades 查詢優(yōu)化器采用自頂向下的搜索策略,并在搜索過程中利用 Memo 結(jié)構(gòu)保存搜索的狀態(tài)。

Cascades 關(guān)鍵組件構(gòu)成:

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

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

Memo:由于 Cascades 框架采用自頂向下的方式進(jìn)行枚舉,因此,枚舉過程中可能產(chǎn)生大量的重復(fù)計(jì)劃。為了防止出現(xiàn)重復(fù)枚舉,Cascades 框架采用 Memo 數(shù)據(jù)結(jié)構(gòu)。Memo 采用一個(gè)類似樹狀(實(shí)際是一個(gè)圖狀)的數(shù)據(jù)結(jié)構(gòu),它的每個(gè)節(jié)點(diǎn)對應(yīng)一個(gè)組,每個(gè)組的成員通過鏈表組織起來;

Transformation Rule:是作用于 Expression 和 Group 上的等價(jià)變化規(guī)則,用來擴(kuò)大優(yōu)化器搜索空間。

Cascades 首先將整個(gè) Operator Tree 按節(jié)點(diǎn)拷貝到一個(gè) Memo 的數(shù)據(jù)結(jié)構(gòu)中,Memo 由一系列的 Group 構(gòu)成,每個(gè)算子放在一個(gè) Group,對于有子節(jié)點(diǎn)的算子來說,將原本對算子的直接引用,變成對 Group 的引用。

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

圖 3 如圖 3 所示,生成該語法樹的 Memo 初始結(jié)構(gòu)。Memo 結(jié)構(gòu)中一個(gè)圓角框代表一個(gè)算子,圓角框右下角是對其 Children’s Groups 的引用,左下角是唯一標(biāo)識符。生成初始的 Memo 結(jié)構(gòu)后,可以采用 transform rule 進(jìn)行邏輯等價(jià)轉(zhuǎn)換,規(guī)則如下:

對于一個(gè)邏輯算子,其所有基于關(guān)系代數(shù)的等價(jià)表達(dá)式保存在同一個(gè) Group 內(nèi),例如 join(A,B) -> join(B,A);

在一個(gè) Group 內(nèi),對于一個(gè)邏輯算子,會(huì)生成一個(gè)或多個(gè)物理算子,例如 join -> hash join,merge join,NestLoop join;

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

在圖 4 中,描述了一個(gè)部分?jǐn)U展的 Memo結(jié)構(gòu),與圖 1 中的初始 Memo 相比,在同一個(gè) Group 內(nèi),增加了等價(jià)的邏輯算子,以及對應(yīng)的物理算子。

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

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

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

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

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

審核編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • SQL
    SQL
    +關(guān)注

    關(guān)注

    1

    文章

    764

    瀏覽量

    44134
  • 數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    7

    文章

    3799

    瀏覽量

    64396
  • 數(shù)據(jù)結(jié)構(gòu)

    關(guān)注

    3

    文章

    573

    瀏覽量

    40132

原文標(biāo)題:深度解讀Cascades查詢優(yōu)化器

文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

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

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

    網(wǎng)絡(luò)分析基本原理,怎么使用網(wǎng)絡(luò)分析儀?

    網(wǎng)絡(luò)分析基本原理網(wǎng)絡(luò)分析儀的測量方法網(wǎng)絡(luò)分析儀的結(jié)構(gòu)怎么使用網(wǎng)絡(luò)分析儀?
    發(fā)表于 04-12 06:57

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

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

    電機(jī)轉(zhuǎn)動(dòng)的基本原理是什么?

    電機(jī)轉(zhuǎn)動(dòng)的基本原理是什么?電機(jī)運(yùn)動(dòng)的基本原則有哪些?
    發(fā)表于 07-21 07:59

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

    講解模塊原理圖-PDF、原理圖庫、PCB庫下載基本原理線性電源的基本原理是市電經(jīng)過一個(gè)工頻變壓降壓成低壓交流電之后,通過整流和濾波形成直流電,最后通過穩(wěn)壓電路輸出穩(wěn)定的低壓直流電。線性電源的優(yōu)點(diǎn)是...
    發(fā)表于 07-30 07:47

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

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

    模數(shù)轉(zhuǎn)換(ADC)的基本原理是什么?

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

    通用計(jì)時(shí)基本原理是什么?

    通用計(jì)時(shí)基本原理是什么?
    發(fā)表于 01-21 06:30

    顯示EDID 基本原理

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

    計(jì)數(shù)基本原理介紹

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

    鎖相環(huán)路的基本原理和性能分析

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

    步進(jìn)馬達(dá)基本原理

    步進(jìn)馬達(dá)基本原理步進(jìn)馬達(dá)基本原理步進(jìn)馬達(dá)基本原理
    發(fā)表于 11-30 11:55 ?8次下載

    主從sr觸發(fā)基本原理分析

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

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

    LLC電路基本原理分析及公式推導(dǎo)說明。
    發(fā)表于 04-29 14:42 ?83次下載

    了解矢量網(wǎng)絡(luò)分析基本原理

    了解矢量網(wǎng)絡(luò)分析基本原理
    發(fā)表于 11-02 15:11 ?1次下載
    主站蜘蛛池模板: 黄蓉h肉辣文大全| 亚洲黄色三级| 色综合久久中文字幕网| 国内一级野外a一级毛片| 天天操夜夜爽| 老子影院午夜精品欧美视频| 亚洲第一黄色网址| 一区二区三区精品视频| 五月激情丁香| 污污的黄色小说| 日本日b视频| 狠狠色丁香婷婷综合橹不卡| 免费理论片在线观看播放| 黄色毛片基地| 国模吧在线视频| 大色综合色综合资源站| 午夜色在线| 91噜噜噜| 久久精品国波多野结衣| 资源种子在线观看| 天堂视频在线视频观看2018| yy4080一级毛片免费观看| 黄色国产在线视频| 欧美一区二区三区免费高| 日韩在线毛片| 亚洲天堂网站| 在线视免费频观看韩国aaa| 亚洲区中文字幕| 九九久久国产精品大片| 国产高清在线精品| 色噜噜狠狠狠色综合久| 天天干干干干| 一级片高清| 午夜在线播放视频在线观看视频| www.碰| 色站视频| 能看的黄网| 四虎国产在线| 奇米影视四色7777久久精品| 亚洲国产精品嫩草影院| 午夜影院网页|