詳解GaussDB(DWS)中的行執行引擎

来源:https://www.cnblogs.com/huaweiyun/p/18185668
-Advertisement-
Play Games

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


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

1.前言

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

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

2.行執行引擎組成

2.1 行執行框架

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

2.2 行執行引擎運算元

運算元總共分為四類,掃描運算元,控制運算元,物化運算元,連接運算元等。對於分散式系統而言,還包括著stream運算元等。

2.2.1 掃描運算元

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

2.2.2 連接運算元

連接運算元對應了關係代數中的連接操作,以表 t1 join t2 為例,主要的集中連接類型如下:inner join、left join、right join、full join、semi join、 anti join,其實現方式包括Nestloop、HashJoin、MergeJoin;

三類連接運算元的實現方式特點:

2.2.3 物化運算元

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

2.2.4 控制運算元

控制運算元是一類用於處理特殊情況的節點,用於實現特殊的執行流程。

2.2.5 其他運算元

其他運算元包括Stream運算元,以及RemoteQuery等運算元

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

Gather運算元: 每個源結點都將其數據發送給目標結點進行匯聚

gather運算元

Broadcast stream: 由一個源節點將其數據發給N個目標節點進行運算

Redistrubute stream: 每個源節點將其數據根據連接條件計算Hash值,根據重新計算的Hash值進行分佈,發給對應的目標節點

3. 執行框架總結

本文主要講解瞭如下幾個方面:

  • 大致介紹了GaussDB(DWS)行執行引擎在整個資料庫系統中的位置;
  • 介紹了行執行引擎的框架;
  • 最後介紹了一些常見和常用的行執行引擎相關的運算元。

 

點擊關註,第一時間瞭解華為雲新鮮技術~

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 謹防持久化+未授權訪問漏洞入侵伺服器 CVE編號找不到,CNVD有一個:CNVD-2015-07557(國家信息安全漏洞共用平臺漏洞編號)。 這是我之前寫過的文章,漏洞成因、影響範圍、POC與對抗方案有詳解: 謹防利用Redis未授權訪問漏洞入侵伺服器 RDB(Redis Database、全量保存 ...
  • 場景假設 A表(1000條數據)left join B表(1000條數據)。 嵌套迴圈(Nested-Loop Join) 極簡概括:顧名思義多層迴圈疊加,由於MySQL條數數量有限,所用for迴圈而不用while,在MySQL中就是多層for迴圈。 性能問題:MySQL使用這種作為join方式最簡 ...
  • 面試遇到過的Redis問題 Redis的數據類型 怎麼利用Redis解決超賣問題 緩存雪崩、緩存擊穿、緩存穿透 1. 什麼是Redis Redis就是一個非關係型資料庫(NoSQL),我們知道關係型資料庫MySQL,在MySQL里我們對於數據的增刪改查需要SQL語句(select * from... ...
  • 問題現象 ps -ef | grep yas 查看無yasom和yasagent進程,且在{資料庫安裝目錄}/om/{資料庫名稱}的目錄下沒有conf、data、log等目錄,確定資料庫不是用yasboot安裝,是用腳本安裝的 問題的風險及影響 非yasboot安裝,ycm無法完成托管,無法監控 問 ...
  • 1. 插入數據 1.1 insert 如果我們需要一次性往資料庫表中插入多條記錄,可以從以下三個方面進行優化。 insert into tb_test values(1,'tom'); insert into tb_test values(2,'cat'); insert into tb_test ...
  • 剛進公司,任務是接管PLM系統,但是還在給外包團隊開發,沒有代碼。無妨先看業務和資料庫,ok,業務看不懂,只能先看資料庫,資料庫沒有數據字典,這個系統沒有任何文檔產出......練手時發現資料庫類型是Oracle,面對百度不成問題,數據字典只能看前端然後去資料庫裡面一個個找著對應自己整理了,純折磨 ...
  • 引言 在數據驅動的世界中,企業正在尋求可靠且高性能的解決方案來管理其不斷增長的數據需求。本系列博客從一個重視數據安全和合規性的 B2C 金融科技客戶的角度來討論雲上雲下混合部署的情況下如何利用亞馬遜雲科技雲原生服務、開源社區產品以及第三方工具構建無伺服器數據倉庫的解耦方法。 Apache Dolph ...
  • 之前寫過一篇文章MySQL如何獲取binlog的開始時間和結束時間[1],文章裡面介紹瞭如何獲取MySQL資料庫二進位日誌(binlog)的開始時間與結束時間的一些方法。實際應用當中,我們可能還會遇到效率/性能方面的問題。最近對這個問題做了一些研究,這裡就介紹一下如何快速獲取MySQL二進位日誌(b ...
一周排行
    -Advertisement-
    Play Games
  • 前言 微服務架構已經成為搭建高效、可擴展系統的關鍵技術之一,然而,現有許多微服務框架往往過於複雜,使得我們普通開發者難以快速上手並體驗到微服務帶了的便利。為瞭解決這一問題,於是作者精心打造了一款最接地氣的 .NET 微服務框架,幫助我們輕鬆構建和管理微服務應用。 本框架不僅支持 Consul 服務註 ...
  • 先看一下效果吧: 如果不會寫動畫或者懶得寫動畫,就直接交給Blend來做吧; 其實Blend操作起來很簡單,有點類似於在操作PS,我們只需要設置關鍵幀,滑鼠點來點去就可以了,Blend會自動幫我們生成我們想要的動畫效果. 第一步:要創建一個空的WPF項目 第二步:右鍵我們的項目,在最下方有一個,在B ...
  • Prism:框架介紹與安裝 什麼是Prism? Prism是一個用於在 WPF、Xamarin Form、Uno 平臺和 WinUI 中構建鬆散耦合、可維護和可測試的 XAML 應用程式框架 Github https://github.com/PrismLibrary/Prism NuGet htt ...
  • 在WPF中,屏幕上的所有內容,都是通過畫筆(Brush)畫上去的。如按鈕的背景色,邊框,文本框的前景和形狀填充。藉助畫筆,可以繪製頁面上的所有UI對象。不同畫筆具有不同類型的輸出( 如:某些畫筆使用純色繪製區域,其他畫筆使用漸變、圖案、圖像或繪圖)。 ...
  • 前言 嗨,大家好!推薦一個基於 .NET 8 的高併發微服務電商系統,涵蓋了商品、訂單、會員、服務、財務等50多種實用功能。 項目不僅使用了 .NET 8 的最新特性,還集成了AutoFac、DotLiquid、HangFire、Nlog、Jwt、LayUIAdmin、SqlSugar、MySQL、 ...
  • 本文主要介紹攝像頭(相機)如何採集數據,用於類似攝像頭本地顯示軟體,以及流媒體數據傳輸場景如傳屏、視訊會議等。 攝像頭採集有多種方案,如AForge.NET、WPFMediaKit、OpenCvSharp、EmguCv、DirectShow.NET、MediaCaptre(UWP),網上一些文章以及 ...
  • 前言 Seal-Report 是一款.NET 開源報表工具,擁有 1.4K Star。它提供了一個完整的框架,使用 C# 編寫,最新的版本採用的是 .NET 8.0 。 它能夠高效地從各種資料庫或 NoSQL 數據源生成日常報表,並支持執行複雜的報表任務。 其簡單易用的安裝過程和直觀的設計界面,我們 ...
  • 背景需求: 系統需要對接到XXX官方的API,但因此官方對接以及管理都十分嚴格。而本人部門的系統中包含諸多子系統,系統間為了穩定,程式間多數固定Token+特殊驗證進行調用,且後期還要提供給其他兄弟部門系統共同調用。 原則上:每套系統都必須單獨接入到官方,但官方的接入複雜,還要官方指定機構認證的證書 ...
  • 本文介紹下電腦設備關機的情況下如何通過網路喚醒設備,之前電源S狀態 電腦Power電源狀態- 唐宋元明清2188 - 博客園 (cnblogs.com) 有介紹過遠程喚醒設備,後面這倆天瞭解多了點所以單獨加個隨筆 設備關機的情況下,使用網路喚醒的前提條件: 1. 被喚醒設備需要支持這WakeOnL ...
  • 前言 大家好,推薦一個.NET 8.0 為核心,結合前端 Vue 框架,實現了前後端完全分離的設計理念。它不僅提供了強大的基礎功能支持,如許可權管理、代碼生成器等,還通過採用主流技術和最佳實踐,顯著降低了開發難度,加快了項目交付速度。 如果你需要一個高效的開發解決方案,本框架能幫助大家輕鬆應對挑戰,實 ...