您的位置:首頁 > 軟件教程 > 教程 > 深度解析GaussDB(DWS)行執(zhí)行引擎

深度解析GaussDB(DWS)行執(zhí)行引擎

來源:好特整理 | 時間:2024-05-11 09:48:58 | 閱讀:140 |  標簽: 引擎 S SSD   | 分享到:

本文分享自華為云社區(qū)《GaussDB(DWS)行執(zhí)行引擎詳解》,作者:yd_227398895。 1.前言 GaussDB(DWS)包含三大引擎,一是SQL執(zhí)行引擎,用來解析用戶輸入的SQL語句,生成執(zhí)行計劃,供執(zhí)行引擎來執(zhí)行;二是執(zhí)行引擎,其中包含了行執(zhí)行引擎和列執(zhí)行引擎,執(zhí)行引擎即查詢的執(zhí)行者,

本文分享自華為云社區(qū)《GaussDB(DWS)行執(zhí)行引擎詳解》,作者:yd_227398895。

華為云的GaussDB(DWS)是一個強大的數(shù)據(jù)庫系統(tǒng),它包含了三大引擎:SQL執(zhí)行引擎、執(zhí)行引擎和存儲引擎。其中,執(zhí)行引擎又包含了行執(zhí)行引擎和列執(zhí)行引擎。行執(zhí)行引擎在行存表中發(fā)揮作用,適用于傳統(tǒng)的OLTP(OnLine Transaction Processsing 聯(lián)機事務處理)場景,特別適合需要頻繁進行增刪改查操作的業(yè)務。本文將深入探討行執(zhí)行引擎的組成和工作原理。

前言

GaussDB(DWS)包含三大引擎,一是SQL執(zhí)行引擎,用來解析用戶輸入的SQL語句,生成執(zhí)行計劃,供執(zhí)行引擎來執(zhí)行;二是執(zhí)行引擎,其中包含了行執(zhí)行引擎和列執(zhí)行引擎,執(zhí)行引擎即查詢的執(zhí)行者,位于優(yōu)化器和存儲引擎之間,負責將數(shù)據(jù)從存儲引擎中讀取出來,并根據(jù)計劃將數(shù)據(jù)處理加工后返回給客戶端,執(zhí)行引擎的目標是為了更好地利用計算資源,更快地完成計算。三是存儲引擎,決定了數(shù)據(jù)庫數(shù)據(jù)的存取方式,直接影響了數(shù)據(jù)庫的讀寫性能。

其中行執(zhí)行引擎應用于行存表中,傳統(tǒng)的OLTP(OnLine Transaction Processsing 聯(lián)機事務處理)場景與功能、業(yè)務強相關,數(shù)據(jù)需要進行頻繁的增刪改查,這時比較適合使用行存儲式。行存儲的優(yōu)勢主要有兩個方面:首先是點查性能好,在點查場景下可以直接索引到某行數(shù)據(jù)的元組位置;其次就是更新效率高,行存儲在實時并發(fā)入庫,并發(fā)更新方面依然有著比較大的優(yōu)勢。行執(zhí)行引擎的關鍵就是:一次處理一行數(shù)據(jù),即一tuple,適合數(shù)據(jù)頻繁更新,增刪改操作多,且查詢結(jié)果涉及表的多列的場景。

行執(zhí)行引擎組成

行執(zhí)行框架

行執(zhí)行引擎的執(zhí)行基本單位是算子,查詢計劃是以樹的形式存在的,算子是執(zhí)行樹上的每個節(jié)點。每個算子需要經(jīng)歷初始化,執(zhí)行,清理的生命周期,執(zhí)行時包括遞歸遍歷計劃樹的各個節(jié)點,從計劃樹根節(jié)點開始,遞歸到葉節(jié)點來獲取一個tuple,經(jīng)過逐層節(jié)點算子的處理,返回一個結(jié)果tuple,直到再無tuple。整體算子的執(zhí)行采用Piepline模式,一次一tuple,控制流從上到下,數(shù)據(jù)流由下到上,圖示實線為控制流,虛線為數(shù)據(jù)流,使用上層來驅(qū)動下層。

深度解析GaussDB(DWS)行執(zhí)行引擎

行執(zhí)行引擎算子

算子總共分為四類,掃描算子,控制算子,物化算子,連接算子等。對于分布式系統(tǒng)而言,還包括著stream算子等。

掃描算子

掃描算子用來掃描表中的數(shù)據(jù),每次獲取一條元組作為上層節(jié)點的輸入, 存在于查詢計劃樹的葉子節(jié)點,它不僅可以掃描表,還可以掃描函數(shù)的結(jié)果集、鏈表結(jié)構(gòu)、子查詢結(jié)果集。一些比較常見的掃描算子如表所示。

連接算子

連接算子對應了關系代數(shù)中的連接操作,以表 t1 join t2 為例,主要的集中連接類型如下:inner join、left join、right join、full join、semi join、 anti join,其實現(xiàn)方式包括Nestloop、HashJoin、MergeJoin;

三類連接算子的實現(xiàn)方式特點:

物化算子

物化算子是一類可緩存元組的節(jié)點。在執(zhí)行過程中,很多擴展的物理操作符需要首先獲取所有的元組才能進行操作(例如聚集函數(shù)操作、沒有索引輔助的排序等),這是要用物化算子將元組緩存起來;

控制算子

控制算子是一類用于處理特殊情況的節(jié)點,用于實現(xiàn)特殊的執(zhí)行流程。

其他算子

其他算子包括Stream算子,以及RemoteQuery等算子

Stream算子主要有三種類型:Gather stream、Broadcast stream、Redistribute stream

深度解析GaussDB(DWS)行執(zhí)行引擎

小編推薦閱讀

好特網(wǎng)發(fā)布此文僅為傳遞信息,不代表好特網(wǎng)認同期限觀點或證實其描述。

相關視頻攻略

更多

掃二維碼進入好特網(wǎng)手機版本!

掃二維碼進入好特網(wǎng)微信公眾號!

本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權,請發(fā)郵件[email protected]

湘ICP備2022002427號-10 湘公網(wǎng)安備:43070202000427號© 2013~2025 haote.com 好特網(wǎng)