精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

深度解析 PolarDB 數據庫并行查詢技術

云計算
隨著數據規模的不斷擴大,用戶SQL的執行時間越來越長,這不僅對數據庫的優化能力提出更高的要求,并且對數據庫的執行模式也提出了新的挑戰。本文主要介紹基于代價進行并行優化、并行執行的云數據庫的并行查詢引擎的關鍵問題和核心技術。

 [[399309]]

一、背景

隨著數據規模的不斷擴大,用戶SQL的執行時間越來越長,這不僅對數據庫的優化能力提出更高的要求,并且對數據庫的執行模式也提出了新的挑戰。隨著數據庫在云上的蓬勃發展,越來越多的傳統用戶遷移到云上,享受云上彈性擴展的紅利,但是隨著業務的快速擴張,卻發現即使動態增加了很多資源,但SQL的執行時間還是越來越慢,并沒有隨著資源的投入達到預期的效果。顯而易見,雖然新增了很多資源,但這些資源并沒用被充分利用,很多傳統的商業數據庫,如Oracle、SQL Server等都提供對并行查詢引擎的支持,以充分利用系統資源,達到加速SQL執行的效果。

本文主要介紹基于代價進行并行優化、并行執行的云數據庫的并行查詢引擎的關鍵問題和核心技術。

二、如何將查詢并行起來

對于一個類OLAP的查詢,顯而易見的是它通常是對大批量數據的查詢,數據量大意味著數據遠大于數據庫的內存容量,大部分數據可能無法緩存到數據庫的緩沖區中,而必須在查詢執行時才動態加載到緩沖區中,這樣就會造成大量IO操作,而IO操作又是最耗時的,因此首先要考慮的就是如何能加速IO操作。

由于硬件的限制,每次IO的耗時基本是固定的,雖然還有順序IO和隨機IO的區別,但在SSD已經盛行的今天,兩者的差異也在逐漸接近。那么還有沒有其它方式可以加速IO呢? 顯然并行IO是一個簡單易行的方法,如果多個線程可以同時發起IO,每個線程只讀取部分數據,這樣就可以快速的將數據讀到數據庫的緩沖區中。

并行讀取數據的示意如上圖所示,每個worker代表一個線程,如果數據已經有partition分區,可以每個線程讀取一個partition;也可以將全部數據按固定大小進行分片,比如按一個數據頁面大小,然后每個線程以Round-robin模式輪詢讀取一個分片。

這里需要注意的是,按已有partition分配給不同worker可能會導致每個worker處理的數據不均勻,而按Round-robin模式進行輪詢,如果分片設置的比較小,相對來說就比較容易做到每個worker處理的數據比較均勻。

如果只是將數據讀取到緩沖區中,而不是立即進行后續處理,那么這些數據就會因緩沖區爆滿導致數據被換出,從而失去加速IO的意義。因此,在并行讀取數據的同時,必須同時并行的處理這些數據,這是并行查詢加速的基礎。

傳統的優化器只能生成串行的執行計劃,為了實現并行讀取數據,同時并行處理數據,首先必須對現有的優化器進行改造,讓優化器可以生成我們需要的并行計劃。比如選擇哪個表或哪些表可以并行讀取,并且通過并行讀取會帶來足夠的收益;或者哪些操作可以并行執行,并且可以帶來足夠的收益。

并不是說并行化改造一定會有收益,比如對一個數據量很小的表,可能只是幾行,如果也對它進行并行讀取的話,并行執行所需要的多線程構建再加上線程間的數據同步等所需要的代價可能遠大于所得到的收益,總體來說,并行執行會需要更多的資源和時間,這就得不償失了。因此查詢計劃的并行化必須是基于代價的,否則可能會導致更嚴重的性能退化問題。

三、如何選擇并行掃描的表

選擇并行掃描的表是生成并行計劃的重要基礎,通過基于并行掃描代價的計算和比較,選擇可以并行掃描的表作為候選,是并行執行計劃迭代的第一步。基于新的并行代價,也許會有更優的JOIN順序選擇,尤其是當參與JOIN的表的數量比較多時,這需要更多額外的迭代空間,為防止優化過程消耗太多的時間,保持原有計劃的JOIN順序是一個不錯的選擇。另外,對于參與JOIN的每張表,因為表的訪問方法不同,比如全表掃描、Ref索引掃描,Range索引掃描等,這些都會影響到最終并行掃描的代價。

通常我們選擇最大的那張表作為并行表,這樣并行掃描的收益最大,當然也可以選擇多個表同時做并行掃描,后面會繼續討論更復雜的情況。

下面以查詢年度消費TOP 10的用戶為例:

SELECT c.c_name, sum(o.o_totalprice) as s FROM customer c, orders o WHERE c.c_custkey = o.o_custkey AND o_orderdate >= '1996-01-01' AND o_orderdate <= '1996-12-31' GROUP BY c.c_name ORDER BY s DESC LIMIT 10;

其中orders表為訂單表,數據很多,這類表也被稱之為事實表,customer表為客戶表,數據相對較少,這類表也被稱之為維度表。那么此SQL的并行執行計劃如下圖所示:

從計劃中可以看出orders表會做并行掃描,由32個workers線程來執行,每個worker只掃描orders表的一部分數據分片,然后與customer表按o_custkey做index lookup進行JOIN,JOIN的結果發送到一個collector組件,然后由collector組件繼續做后續的GROUP BY、ORDER BY及LIMIT操作。

四、選擇多表并行的JOIN

將一張表做并行掃描之后,就會想為什么只能選擇一張表?如果SQL中有2張或更多的FACT表,能不能可以將FACT表都做并行掃描呢?答案是當然可以。以下面SQL為例:

SELECT o.o_custkey, sum(l.l_extendedprice) as s FROM orders o, lineitem l WHERE o.o_custkey = l.l_orderkey GROUP BY o.o_custkey ORDER BY s LIMIT 10;

其中orders表和lineitem表都是數據量很大的事實表,此SQL的并行執行計劃如下圖所示:

從計劃中可以看到orders表和lineitem表都會做并行掃描,都由32個workers線程來執行。那么多個表的并行是如何實現的呢?我們以2個表為例,當2個表執行JOIN時,通常的JOIN方式有Nested Loop JOIN、HASH JOIN等,對于不同的JOIN方式,為保證結果的正確性,必須選擇合理的表掃描方式。

以HASH JOIN為例,對于串行執行的HASH JOIN來說,首先選擇一個表創建HASH表稱之為Build表,然后讀取另一個Probe表,計算HASH,并在Build表中進行HASH匹配,若匹配成功,輸出結果,否則繼續讀取。如果改為并行HASH JOIN,并行優化器會對串行執行的HASH JOIN進行并行化改造,使之成為并行HASH JOIN,并行化改造的方案可以有以下兩種解決方案。

方案一是將2個表都按HASH key進行分區,相同HASH值的數據處于同一個分區內,由同一個線程執行HASH JOIN。方案二是創建一個共享的Build表,由所有執行HASH JOIN的線程共享,然后每個線程并行讀取屬于自己線程的另外一個表的分片,再執行HASH JOIN。最終選擇哪種方案,通過代價估算來決定。

圖2 并行HASH JOIN示意圖

對于方案一,需要讀取表中的所有數據,根據選中的HASH key,對數據進行分區,并將數據發送到不同的處理線程中,這需要額外增加一個Repartition算子,負責根據分區規則將數據發送到不同的處理線程。對于方案二,需要并行創建共享的HASH build表,當build表創建成功后,每個線程讀取Probe表的一個分片,分別執行HASH JOIN,這里的分片并不需要按照HASH key進行分片,每個線程分別讀取互不相交的分片即可。

五、分析統計的復雜算子的并行

對于一個分析統計的需求,GROUP BY操作是繞不開的操作,尤其對大量的JOIN結果再做GROUP BY操作,是整個SQL中最費時的一個過程,因此GROUP BY的并行也是并行查詢引擎必須優先解決的問題。

以年度消費TOP10客戶的SQL為例,對GROUP BY并行化后的并行執行計劃如下圖所示:

與之前的執行計劃相比,新的執行計劃中多了一個collector組件,總共有2個collector組件。首先我們看第二行的collector組件,它的extra信息中有2條"Using temporary; Using filesort",這表示它是對從workers接收到的數據執行GROUP BY,然后再按ORDER排序,因為只有第一個collector組件在用戶的session中,所以這個collector也是在worker中并行執行,也就是說并行的做Group by和Order by以及Limit;然后看第一行的collector組件,它的extra信息中只有一條"Merge sort",表示session線程對從workers接收到的數據執行一次merge sort,然后將結果返回給用戶。這里可能就有人會提出疑問,為什么session線程只做merge sort就可以完成GROUP BY操作呢?另外LIMIT在哪里呢?

首先回答第2個問題,因為explain計劃顯示的問題,在常規模式下不顯示LIMIT操作,但在Tree模式下會顯示LIMIT操作。如下所示:

從Tree型計劃樹上可以清楚的看到LIMIT操作有2處,一處在計劃的頂端,也就是在session上,做完limit后將數據返回給用戶;另外一處在計劃樹的中間位置,它其實是在worker線程的執行計劃上,在每個worker線程中在排序完成后也會做一次limit,這樣就可以極大減少worker返回給session線程的數據量,從而提升整體性能。

下面來回答第一個問題,為什么GROUP BY只需要在worker線程上執行一次就可以保證結果的正確性。通常來說,每個worker只有所有數據的一個分片,只在一個數據分片上做GROUP BY是有極大的風險得到錯誤的GROUP BY結果的,因為同一GROUP分組的數據可能不只是在本WORKER的數據分片上,也可能在其它WORKER的數據分片中,被其它WORKER所持有。但是如果我們可以保證同一GROUP分組的數據一定位于同一個數據分片,并且這個數據分片只被一個WORKER線程所持有,那么就可以保證GROUP BY結果的正確性。通過Tree型執行計劃可以看到,在并行JOIN之后,將JOIN的結果按GROUP分組的KEY值: c.c_name進行Repartition操作,將相同分組的數據分發到相同的WORKER,從而保證每個WORKER擁有的數據分片互不交叉,保證GROUP BY結果的正確性。

因為每個WORKER的GROUP BY操作已經是最終結果,所以還可以將ORDER BY和LIMIT也下推到WORKER來執行,進一步提升了并行執行的效率。

六、并行查詢引擎對TPCH的線性加速

附圖是一個并行查詢引擎對TPCH的加速效果,TPC-H中100%的SQL可以被加速,70%的SQL加速比超過8倍,總和加速近13倍,Q6和Q12加速甚至超過32倍。

七、總結

數據庫是應用系統的核心,而優化器是數據庫的核心,優化器的好壞幾乎可以決定一個數據庫產品的成敗。開發一個全新的優化器,對任何團隊都是一個巨大的挑戰,技術的復雜度暫且不提,就是想做到產品的足夠穩定就是一個非常難以克服的困難。因此即使傳統商業數據庫,也是在現有優化器的基礎上不斷改進,逐漸增加對并行的支持,最終成為一個成熟的并行優化器。對PolarDB也是如此,在設計和開發并行查詢引擎時,我們充分利用現有優化器的技術積累和實現基礎,不斷改進,不斷打磨,最終形成了一個持續迭代的技術方案,以保證新的優化器的穩定運行和技術革新。

 

責任編輯:梁菲 來源: 阿里云云棲號
相關推薦

2021-05-07 09:25:34

數據庫工具技術

2022-02-17 11:03:06

MySQL組件查詢

2009-09-02 18:52:38

Oracle數據庫并行

2010-04-09 14:48:41

Oracle數據庫

2010-04-07 14:22:46

2010-04-09 14:37:08

Oracle數據庫

2011-05-19 10:29:40

數據庫查詢

2011-06-21 15:58:20

Qt 數據庫

2011-06-21 15:48:41

2010-09-17 20:04:21

2017-09-30 10:41:22

數據庫PolarDB關系

2011-08-11 17:00:33

iPhone數據庫SQLite

2009-08-22 21:36:54

光纜模光互聯綜合布線

2023-11-17 07:16:01

2025-01-22 08:19:34

2011-03-07 15:54:30

2024-01-19 08:01:08

TuGraph-DB數據庫查詢引擎

2021-05-29 11:32:21

阿里云數據庫PolarDB
點贊
收藏

51CTO技術棧公眾號

亚洲嫩模很污视频| 97se亚洲国产综合自在线不卡| 国产偷亚洲偷欧美偷精品| 日本女优爱爱视频| 成人无遮挡免费网站视频在线观看| 国产美女精品人人做人人爽| 亚洲欧美在线视频观看| 日韩精品免费一线在线观看| 91看片就是不一样| 国产内射老熟女aaaa| 美国黄色片视频| 激情小说一区| 欧美午夜理伦三级在线观看| 欧美一级特黄aaaaaa在线看片| 五月天婷婷社区| 麻豆精品蜜桃视频网站| 韩国三级日本三级少妇99| 精品国产aaa| 国产精品对白| 51精品秘密在线观看| 国产免费黄色av| www在线视频| 国产午夜精品美女毛片视频| 成人自拍网站| 亚洲图片在线播放| 久久精品人人做人人爽电影蜜月| 欧美精品少妇videofree| www.狠狠爱| 国产精伦一区二区三区| 欧美狂野另类xxxxoooo| 国产男女在线观看| 国产精品一品| 亚洲欧美aⅴ...| 亚洲 日韩 国产第一区| 色婷婷综合成人av| 久久视频免费观看| 亚洲成年人av| 警花av一区二区三区| 国产91久久久| www.国产高清| 国产精品主播在线观看| 欧美日韩一区国产| 欧美激情精品久久久久久| 欧美视频亚洲图片| 国产精品伦一区二区| 日韩欧美一区二区三区| 欧美亚洲黄色片| 日本在线视频中文有码| 国产精品福利电影一区二区三区四区| 欧美一级爱爱| 蜜桃视频在线观看网站| 成人免费视频视频| 官网99热精品| 人妻妺妺窝人体色www聚色窝 | 欧美日韩女优| 日本高清不卡视频| 国产精品无码av无码| 厕沟全景美女厕沟精品| 日韩欧美精品免费在线| 亚洲精品无码久久久久久| 国产高潮在线| 色综合久久88色综合天天6| 久久国产亚洲精品无码| 在线免费日韩片| 日韩欧美在线网址| 男人搞女人网站| 国产成人福利夜色影视| 欧美精品久久久久久久久老牛影院 | 国产性生活毛片| 四虎884aa成人精品最新| 日韩久久免费视频| 蜜桃久久精品成人无码av| 成人免费看片39| 久久久精品亚洲| 18精品爽视频在线观看| 亚洲精品激情| 国产成人亚洲精品| 国产精品高潮呻吟AV无码| 国产成人精品1024| 久久涩涩网站| 92国产在线视频| 亚洲精品一二三| 国产精品裸体瑜伽视频| 成人在线爆射| 欧美一区二视频| 黄色av网址在线观看| 久久99精品久久久久久园产越南| 中文字幕视频在线免费欧美日韩综合在线看 | 精品淫伦v久久水蜜桃| 亚洲欧美国产视频| 国产午夜精品理论片| 99国产成+人+综合+亚洲欧美| 国产成人精品一区二区| 国产婷婷在线视频| 91亚洲国产成人精品一区二区三 | 欧美色图另类| 亚洲日穴在线视频| 少妇人妻大乳在线视频| 四虎4545www精品视频| 日韩午夜电影av| 麻豆av免费观看| 自拍视频亚洲| 国产91色在线免费| 亚洲国产剧情在线观看| 国产亚洲制服色| 国产尤物av一区二区三区| 午夜精品成人av| 精品国产髙清在线看国产毛片| 性高潮久久久久久久| 欧美黄色一区二区| 国产精品爱久久久久久久| www.爱爱.com| 国产精品污www在线观看| av在线com| jizz亚洲女人高潮大叫| 日韩风俗一区 二区| tube国产麻豆| 青青草国产精品97视觉盛宴| 国产精品毛片va一区二区三区| a√资源在线| 欧美性xxxx在线播放| 性色av浪潮av| 九九久久婷婷| 午夜精品99久久免费| 国产视频在线免费观看| 国产目拍亚洲精品99久久精品| 国产www免费| 欧美不卡在线观看| 日韩在线欧美在线国产在线| 在线观看日本网站| 91在线观看下载| 国产精品久久久久9999爆乳| 欧美激情福利| 亚洲欧美中文日韩在线v日本| 久久免费精彩视频| 国产精品18久久久| 成人性做爰片免费视频| **精品中文字幕一区二区三区| 亚洲欧美日韩中文在线制服| 国产又色又爽又黄的| 国产丶欧美丶日本不卡视频| 26uuu成人| 亚洲一区有码| xvideos成人免费中文版| 中文字幕男人天堂| 国产精品欧美久久久久一区二区| 黑森林福利视频导航| 亚洲精品亚洲人成在线| 青青在线视频一区二区三区| av 一区二区三区| 亚洲另类色综合网站| 亚洲精品视频三区| 婷婷精品进入| 97se亚洲综合在线| 国内老司机av在线| 精品999久久久| 中文字幕日韩一级| 91在线视频免费91| 又色又爽又高潮免费视频国产| 影视先锋久久| 国产精品久久久久久久久影视| 韩国中文免费在线视频| 欧美亚洲免费在线一区| 国产黄a三级三级| 韩国一区二区视频| 97超碰国产精品| 欧美黑白配在线| 国产91在线播放| 日本a级在线| 日韩欧美一级二级三级久久久| 欧美日韩三级在线观看| 99久久er热在这里只有精品66| 欧美不卡在线播放| 国产精品亚洲片在线播放| 国产精品欧美日韩| 污污视频在线看| 日韩经典一区二区三区| 中文字幕a级片| 一区二区三区四区av| 久久久午夜精品福利内容| 天使萌一区二区三区免费观看| 亚洲国产一区二区三区在线播| 国产精品久久久久久av公交车| 久久久久久香蕉网| 成人在线观看免费| 欧美成人一区二区三区| 久久久久久91亚洲精品中文字幕| 久久综合久久久久88| 小明看看成人免费视频| 日韩亚洲精品在线| 亚洲精品乱码久久久久久蜜桃91 | 国产一二三在线| 国产亚洲成精品久久| av资源免费看| 色婷婷av一区二区| 久久成人在线观看| 国产网红主播福利一区二区| 亚洲av无码久久精品色欲| 亚洲女人av| 国产激情片在线观看| 免费一区二区| 91在线观看网站| 精品欧美一区二区三区在线观看 | 天天综合狠狠精品| 91精品啪在线观看国产爱臀| 国产精品成人国产乱一区 | 水中色av综合| 91精品国产乱码久久蜜臀| 国产中文字幕视频| 亚洲午夜久久久久久久久久久| 亚洲自拍偷拍图| 成人v精品蜜桃久久一区| 午夜免费福利视频在线观看| 国产精品亚洲产品| 国产乱人伦精品一区二区三区| 精品免费在线| 狼狼综合久久久久综合网| 免费观看亚洲天堂| 国产精品一区二区久久国产| 小视频免费在线观看| 欧美国产乱视频| 秋霞网一区二区| 92国产在线视频| 俄罗斯一级**毛片在线播放| 国产不卡一区视频| 国产嫩草在线观看| 欧美aaaxxxx做受视频| 欧美日韩在线播放一区| 亚洲精品在线观看av| 亚洲欧美在线视频观看| 国产又粗又猛又爽又黄av | 亚洲成人一区二区| 男人操女人的视频网站| 中文字幕一区二区三区在线不卡| 给我看免费高清在线观看| 成人免费av资源| 亚洲熟妇一区二区| 国产精品一二三四区| 91女神在线观看| 日韩av中文在线观看| 黑森林福利视频导航| 国产欧美二区| 99热自拍偷拍| 国产亚洲精品bv在线观看| 日本韩国欧美在线观看| 国产欧美日韩一级| 欧美 丝袜 自拍 制服 另类 | 欧美视频第一区| 国产精品女主播一区二区三区| 日本一本中文字幕| 在线欧美一区| 波多野结衣家庭教师在线| 亚洲国产免费看| 免费一级特黄特色毛片久久看| 日韩亚洲在线| 国产一区亚洲二区三区| 美女黄色成人网| 男人女人黄一级| 蜜臀国产一区二区三区在线播放| 日本a√在线观看| 久久精品二区亚洲w码| 国产精品久久久久久久av福利| 精品一区二区精品| 一区二区三区人妻| zzijzzij亚洲日本少妇熟睡| 国产精品成人99一区无码| xnxx国产精品| 99自拍偷拍视频| 亚洲美女屁股眼交| 日韩成人av毛片| 色婷婷精品久久二区二区蜜臂av| 少妇又紧又色又爽又刺激视频| 欧美三级在线看| 国产成人免费看一级大黄| 亚洲第一精品电影| 欧美在线观看在线观看| 永久免费看mv网站入口亚洲| 午夜看片在线免费| 欧美激情一区二区三级高清视频| 九色porny自拍视频在线播放| 国产成人精品视频| 日韩08精品| 免费日韩电影在线观看| 91亚洲国产成人久久精品| 国产成人亚洲综合无码| 性感少妇一区| 亚洲制服在线观看| 久久久99精品免费观看不卡| 亚洲а∨天堂久久精品2021| 亚洲人午夜精品天堂一二香蕉| 日韩av女优在线观看| 欧美色涩在线第一页| 亚洲av无码一区二区乱子伦 | 成人午夜激情免费视频| 国产欧美三级电影| 亚洲ai欧洲av| 亚洲精选一区| www.国产福利| 国产亚洲一区二区三区| 欧美成人一区二区三区高清| 一本色道久久综合狠狠躁的推荐| 99久久久久久久| 亚洲丝袜在线视频| 日韩特级毛片| 国产精品吴梦梦| 日本一区福利在线| 成人高清dvd| 青青草伊人久久| 自拍视频一区二区| 一区二区三区在线视频观看58| 日韩黄色片网站| 亚洲福利在线视频| 1区2区在线观看| 国产日韩在线看片| 网红女主播少妇精品视频| 久久免费视频2| 久久资源在线| 亚洲综合自拍网| 亚洲愉拍自拍另类高清精品| 伊人免费在线观看| 亚洲欧美另类中文字幕| 国产探花视频在线观看| 成人写真福利网| 日韩欧美一区二区三区在线视频 | 日韩成年人视频| 日韩丝袜情趣美女图片| 午夜在线观看视频| 国产精品99导航| 亚洲人成网77777色在线播放 | 91超碰在线| av免费观看久久| 欧美成人中文| 香蕉视频xxxx| 亚洲激情校园春色| 国产又黄又大又爽| 日韩在线欧美在线| 91国产精品| 四虎影院一区二区| 国产精品一区二区免费不卡| 少妇高潮惨叫久久久久| 欧美三片在线视频观看| 99re在线视频| 国产精品视频自在线| 人人狠狠综合久久亚洲婷婷| 亚洲视频在线观看一区二区三区| 久久综合五月天婷婷伊人| 日韩在线视频免费播放| 亚洲精品黄网在线观看| 午夜久久中文| 麻豆91av| 久久资源在线| 懂色av蜜臀av粉嫩av永久| 欧美肥妇毛茸茸| 制服丝袜在线播放| 国产chinese精品一区二区| 亚洲视频福利| 182在线视频| 欧美网站在线观看| 成人精品福利| 成人午夜黄色影院| 伊人久久亚洲热| 国产三级国产精品| 欧美中文字幕一区| 毛片在线不卡| 99久久一区三区四区免费| 国产综合欧美| 少妇户外露出[11p]| 色悠悠亚洲一区二区| 波多野结衣在线影院| 成人黄色免费网站在线观看| 综合久久久久| 男男做爰猛烈叫床爽爽小说| 日韩欧美大尺度| 日韩av中文| 不卡一区二区三区视频| 国产毛片久久| 日本在线观看网址| 精品国产乱码久久久久久1区2区 | 91久久精品国产91性色tv| 91精品大全| 99精彩视频在线观看免费| 亚洲在线日韩| 日本黄色录像视频| 亚洲国产精品va在线看黑人动漫| 视频在线日韩| 国产成人生活片| 久久亚洲精品国产精品紫薇 | 欧美精品一区二区三区四区| 神马电影网我不卡| 老汉色影院首页| 久久免费视频一区| av av片在线看| 国产精品成人国产乱一区| 国产精品videossex久久发布| 中文精品在线观看| 日韩视频在线永久播放| 性感美女一区二区在线观看| 日本精品免费视频| 国产欧美精品国产国产专区 | 日韩一级片一区二区|