国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

云原生數倉如何破解大規模集群的關聯查詢性能問題?

原創 精選
云計算 云原生
ADB PG基于開源項目Greenplum構建,在單機PostgreSQL的基礎上進行擴展,將多個PG服務同時啟動在單個或多個服務器上并組成集群,以分布式的形式提供數據庫服務。

作者 | 宇毅

前言

近年來,數據庫系統服務的數據量呈指數級增長,同時也面臨處理的業務需求愈發復雜、實時性要求越來越高等挑戰。單機數據庫系統已經逐漸不能滿足現代的數據庫服務要求,因此分布式數據庫/數據倉庫得到了越來越廣泛地運用。

在實時分析(OLAP)領域,分布式數據倉庫可以充分發揮系統的分布式特點,將復雜的OLAP任務分解下發到系統中的所有節點進行計算提升分析性能;分布式數據倉庫也可以比較方便地對系統節點進行擴容,應對用戶業務數據量增加的需求。但是分布式數據倉庫用戶無法避免的一個問題是:隨著數據倉庫集群規模增大,擴容帶來的性價比愈發降低。

造成這種現象的一個原因是,表連接(Join)作為數據庫業務中最廣泛使用的算子之一,在分布式計算中依賴系統節點間的數據交互;當分布式集群規模增大時,節點之間的數據交互代價會明顯增加,這種情況下非??简灧植际较到y的網絡處理能力,并依賴用戶的數據表設計和SQL編寫能力以緩解數據交互壓力。

針對這個問題,業界不同的分布式數據庫系統提出了不同的Join運行時過濾(Runtime Filter)算法。AnalyticDB for PostgreSQL(以下簡稱ADB PG)是一款PB級的MPP架構云原生數據倉庫,同樣也面臨著上述問題的挑戰。本文從ADB PG架構設計的角度出發,探討Runtime Filter在ADB PG中的實現方案,并介紹了基于Bloom Filter的ADB PG Dynamic Join Filter功能技術細節。

ADB PG架構簡介

ADB PG基于開源項目Greenplum構建,在單機PostgreSQL的基礎上進行擴展,將多個PG服務同時啟動在單個或多個服務器上并組成集群,以分布式的形式提供數據庫服務。ADB PG將每一個PG服務稱為一個Segment,并引入了Slice的概念。Slice用于解決分布式系統中的網絡結構,當數據庫涉及到MPP多階段計算時,例如Hash Join左右表的Join Key不滿足相同的Hash分布,那么就需要對Join Key通過網絡傳輸進行重分布,ADB PG將網絡傳輸的前后階段切分為不同的Slices。以下是一個ADB PG集群示意圖。

在這種架構下如何解決大規模集群下表連接Join的性能問題呢?業界解決這個問題的一個方案是引入網絡代理節點,同一機器內的Segment將網絡數據發送至本地代理節點,由代理節點與其它機器上的代理節點進行網絡收發工作以減少網絡擁塞。該方案對ADB PG架構的挑戰較大,且沒有從根本上減少Join的網絡Shuffle開銷。因此為了從Join根源上減少Join計算的數據量,ADB PG設計并實現了Join Runtime Filter方案。

Runtime Filter和Bloom Filter

Runtime FIlter的目的是在Join計算前篩選掉一部分數據,需要一個Filter的實現“載體”。在結合ADB PG的架構設計、存儲層和網絡層的特點后,我們選擇使用Bloom Filter作為Runtime Filter的實現形式。

Bloom Filter是一種概率數據結構,通常被用于判斷一個元素是否屬于一個集合。Bloom Filter的優點是其空間效率非常高,計算性能通常也高;缺點是存在陽性誤判率false positive,但是不存在false negative,即Bloom Filter判斷一個元素是否屬于集合的結果不是單純的true or false,而是"possible true" or "false"。

上圖是一個標準Bloom Filter的計算思路示意圖,其中的0、1為Bloom Filter用于表示集合信息的bit array,即每一位用一個bit存儲。上方x,y,z表示向Bloom Filter中插入的三個元素,分別使用3種hash算法計算hash值后在bit array中置位。而下方為判斷元素w是否屬于集合,由于3個hash值中的某一位沒有在bit array中被置位,可以肯定的是w不屬于集合。

Bloom Filter通常由以下幾個參數描述:

  • m --- Bloom Filter bit array的大小m bits
  • k --- 使用的hash函數個數k
  • p --- 誤判率
  • n --- Bloom Filter插入的元素個數

我們省略推導過程,直接將各個參數的關系給出:

當Bloom Filter足夠大時,可以簡化為:

在設計Bloom Filter時,n和m我們可以根據實際計算場景提前確定,上述公式可以視為自變量為k,應變量為p的函數p(k),此函數通常在k > 0時通常不是單調的(由n:m確定)。因此Bloom Filter在設計時要考慮如何確定hash函數k的個數以獲得最小的誤判率p。根據上式可以計算得到當p為極小值時,對應k的值為:

Bloom Filter的參數設計:

如何將Bloom Filter應用至ADB PG Join過濾優化,我們首先要設計選擇Bloom Filter的參數。對于Bloom Filter插入元素的個數n,可以直接使用執行計劃中獲得的Join右表計劃行數;而為了獲得理想的過濾率,減少誤判率p,ADB PG使用了PG高版本Bloom Filter的思路,設計Bloom FIlter大小Bytes為n的2倍,即總體n:m達到1:16。在這個設計下,可以計算得到最佳的k取值為11,p(k)函數如下圖所示,當k = 11時可以取得最小的p = 0.046%

k = 11意味著對于每一個元素,都需要計算11個hash值以插入到Bloom Filter bit array中,這對于ADB PG是無法接受的,構建Bloom Filter的代價明顯過大。在構建Bloom Filter時,ADB PG會綜合誤判率、hash計算等因素考慮,選擇合適的k值。

在確定構建Bloom Filter的基本原則后,接下來就是工程實現問題。Bloom Filter的工程實現非常簡單高效,通常我們可以直接使用bitset數組來建立Bloom Filter,通過位操作實現Bloom Filter的插入和查找。下圖為向一個Bloom Filter bitset數組中插入元素的計算示意圖。

Dynamic Join Filter in ADB PG

在完成ADB PG Hash Join的Bloom Filter設計后,接來下討論如何將Bloom Filter應用至Join的Runtime Filter中。ADB PG將基于Bloom Filter的Runtime Filter命名為Dynamic Join Filter。

1.Dynamic Join Filter的實現方式

由于ADB PG優化器通常會選擇將右表作為小表,左表作為大表,因此ADB PG將Dynamic Join Filter的設計特點為單向過濾的,即僅用于右表過濾左表,暫不考慮左表過濾右表的形式;同時我們也可以將Dynamic Join Filter靈活應用于Hash Join左表鏈路不同算子的過濾中。

由于Hash Join的形式不同,Dynamic Join Filter的實現形式可以總結為Local Join和MPP Join兩種形式,并根據Runtime Filter是否具有下推算子的能力做進一步區分。

Local Join

Local Join是指左右表的Join Key均滿足相同Hash分布,無需再Shuffle數據。此時Hash、Hash Join和左表Scan處于同一個Slice內部,即同一個進程中,我們可以直接在進程空間內將Bloom Filter傳遞給左表Scan算子過濾輸出。

MPP Join

MPP Join是指左右表的Join Key均不滿足相同Hash分布,需要針對Join Key Shuffle數據。在前文介紹過,ADB PG的Hash Join和Hash算子一定處于同一個Slice內部,因此基于基本原則只需要考慮左表Shuffle的情況,即左表在Hash Join前存在Motion的場景。

MPP Join存在的另一種情況是,左表Motion下不是簡單的Scan,也沒有關聯信息將Join Key的Bloom Filter下推至Scan。那么以減少網絡傳輸數據量為最后準則,將Bloom Filter過濾放在Motion前,減少Motion Sender的數據。

2.Bloom Filter網絡傳輸

Dynamic Join Filter在各個計算節點上建立了一個Local Bloom Filter,每個計算節點需要收集所有其它節點的Bloom Filter,并在本地組成完整的Bloom Filter后才能開始過濾計算。我們將Bloom Filter的收發分為兩種模式:全量傳輸和位傳輸。在發送前我們可以判斷兩種模式的數據量大小,并自適應選擇數據量小的模式。

Bloom Filter全量傳輸

Bloom Filter位傳輸

性能測試

接下來我們對ADB PG Dynamic Join Filter的性能表現測試。測試集群為ADB PG公有云搭建的實例,測試使用TPC-H 1TB測試集(scale = 10000),測試通過開啟\關閉Dynamic Join Filter功能對比執行性能。下圖展示了TPC-H執行性能有差異的Query測試結果:

可以看到Dynamic Join Filter在Q5、Q8、Q9和Q17上均獲得了較大的性能提升,其中Q17的優化性能最佳,執行時間137s優化至8s。而Q10存在略微的性能回退:10s回退至12s,原因在于Q10的Join Key是完全匹配的,Dynamic Join Filter無法做到動態提前過濾,而優化器未能準確估算代價導致計劃仍然使用了Dynamic Join Filter。此外Q20也因為優化器下推規則的的原因沒有選擇Dynamic Join Filter,實際上經過分析Q20與Q17類似,比較適合使用Dynamic Join Filter。為了解決這些問題,ADB PG優化器相關功能仍在開發迭代中。

總結&未來規劃

Dynamic Join Filter根據ADB PG架構設計、存儲層和網絡層特點,使用Bloom Filter作為Join Runtime Filter的實現形式,在TPC-H測試中取得了明顯的性能提升成果。未來我們將從以下幾個方面做進一步的開發和優化,提升客戶使用體驗:

完善Dynamic Join Filter功能,支持各種模式的Hash Join,并進一步推廣到Merge Sort Join、NestedLoop Join的優化中;

提升優化器的代價估算模型精度,完善優化器下推規則;

Runtime Filter自適應調度。

歡迎訪問云原生數據倉庫ADB PG主頁,了解更多:https://help.aliyun.com/product/35364.html

責任編輯:武曉燕 來源: 阿里開發者
相關推薦

2019-04-18 11:37:49

NameNodeHDFS架構

2010-12-23 11:01:19

集群FTPFTP代理

2015-08-31 05:51:37

集群運維私有云

2015-06-11 13:24:27

集群運維

2023-02-17 07:41:18

KubernetePrometheus

2016-08-12 15:40:17

CCEKubernetes華為

2015-10-12 15:11:36

GoogleBorg集群管理

2024-03-06 14:48:54

云原生

2011-07-15 17:12:15

云計算SkyptLync

2015-10-13 11:06:36

谷歌Google Borg集群管理

2015-06-26 09:17:28

WOT2015360孔德亮

2021-08-29 20:02:38

高并發集群部署

2015-09-07 12:06:10

51CTO技術周刊集群運維

2024-06-07 14:01:29

2010-06-03 09:24:46

Oracle

2019-10-09 09:39:15

PythonHDFS大數據

2019-10-09 10:00:02

集群故障場景

2023-11-20 07:27:00

云原生Spark

2020-04-09 11:56:10

Elasticsear集群硬件
點贊
收藏

51CTO技術棧公眾號

日韩成人亚洲| 欧美中日韩免费视频| 97精品国产综合久久久动漫日韩| 伊人久久大香线蕉| 欧美成人毛片| 成人av高清在线| 中文字幕精品在线视频| 一区二区不卡在线观看| 四虎影院观看视频在线观看| 激情婷婷欧美| 欧美三级在线视频| 官网99热精品| av色综合久久天堂av色综合在| 色综合视频一区二区三区日韩| 国语一区二区三区| 自拍视频一区| 中文字幕一区二区三区四区| 欧美成人合集magnet| 91传媒久久久| 日韩深夜影院| 色综合久久久久综合99| 亚洲成人在线网| 欧美高清中文字幕| 亚洲成人偷拍| 亚洲主播在线观看| 国产视频精品网| 黄在线观看免费网站ktv| 93久久精品日日躁夜夜躁欧美| 久久久久久中文| 久草综合在线观看| 日韩国产欧美| 日韩一区二区免费在线观看| 一区二区三区电影| 另类专区欧美蜜桃臀第一页| 免费97视频在线精品国自产拍| 欧美3p视频在线观看| 欧美wwww| 国产亚洲va综合人人澡精品| 欧美一区二区三区免费大片| 9色porny| 91蝌蚪porny成人天涯| 国产精品1区2区在线观看| 黄网在线免费| 精品一二三四区| 91大神福利视频在线| 九九热在线视频观看这里只有精品| 亚洲大胆视频| 久久精品ww人人做人人爽| caoliu在线| 欧美美女啪啪| 精品嫩草影院久久| 亚洲综合av一区| 精品少妇3p| 成人欧美在线视频| 成人三级高清视频在线看| 亚洲高清免费观看高清完整版| 浪潮色综合久久天堂| 色综合视频网站| 日本动漫同人动漫在线观看| 亚洲国产福利在线| 午夜视频一区二区在线观看| 日本成熟性欧美| xxx在线免费观看| 亚洲欧美激情小说另类| 欧美三日本三级少妇三99| 果冻天美麻豆一区二区国产| 97色在线观看| 四虎影视4hu4虎成人| 91精品福利视频| 人妻无码视频一区二区三区 | 91丝袜高跟美女视频| 99re热视频在线| 久久99国产精品麻豆| 92看片淫黄大片看国产片| 国产剧情一区二区在线观看| 欧美女孩性生活视频| 先锋影音资源综合在线播放av| 色美美综合视频| 先锋欧美三级| 97人摸人人澡人人人超一碰| 极品束缚调教一区二区网站| 国产高清精品一区二区三区| 成人午夜碰碰视频| 一区二区成人国产精品| 国产精品成人在线观看| 影音先锋在线播放| 国产精品99免视看9| 精品一区二区在线视频| 国产成人综合美国十次| 99麻豆久久久国产精品免费优播| 视频一区三区| 亚洲伊人观看| 国产原创精品| 国产精品久久福利| 国产精品嫩草视频| 猫咪成人在线观看| 亚洲精美视频| 青青青伊人色综合久久| 国精产品一区二区| 中文字幕永久在线不卡| 黄页在线观看免费| 99视频免费观看蜜桃视频| 成人影视亚洲图片在线| 欧美亚洲另类制服自拍| 欧美在线一级| 精品国产乱码久久久久久蜜柚| 国产精品99久久精品| 国产a级全部精品| 日本一道高清一区二区三区| 免费观看亚洲视频| 成人深夜福利app| 午夜激情在线观看| 欧美日本国产一区| 麻豆影视国产在线观看| 欧美福利视频导航| 亚洲成人一品| 国产成人a亚洲精v品无码| 久久婷婷国产综合精品青草| 日韩一级性生活片| 天天射综合网视频| 欧美性大战久久久久xxx| 精品国产一区二区三区四区四| 亚洲91av| 国产一区再线| 在线看不卡av| 免费在线看污片| 国产精品嫩草在线观看| 久久久人人人| 青青草原亚洲| 欧美区一区二区三区| 日韩精品一区二区三区免费观影 | 欧美日韩在线不卡| 日韩精品免费| 欧美r片在线| 色天使久久综合网天天| 国产探花一区二区| 国产精品国产一区二区| 亚洲大片一区二区三区| 成人ww免费完整版在线观看| 亚洲第一中文字幕在线观看| 久久久久国产精品午夜一区| 可以免费看的黄色网址| 91影院在线免费观看| 蜜桃视频动漫在线播放| 欧美激情性做爰免费视频| 91免费国产视频网站| 国产精品久久免费视频| 九九九九免费视频| 久久久久久国产免费| 中文字幕一区二区三区在线不卡| 9l亚洲国产成人精品一区二三 | 婷婷成人激情| 久久国产成人午夜av影院| 欧美一级视频在线播放| 日韩成人在线视频网站| 国产资源在线看| 97视频热人人精品| 91久久久免费一区二区| 伊人精品成人久久综合软件| 日韩精品黄色| 超碰10000| 午夜精品视频在线观看| 国产精品1区二区.| 国产精品99999| 99久久精品国产观看| yellow在线观看网址| av免费在线播放网站| 久久久久青草大香线综合精品| 91九色在线观看视频| 黑人巨大精品欧美一区二区一视频| 婷婷六月天丁香| 欧美成人精品在线视频| 欧美主播一区二区三区| 日韩视频永久免费| 日韩一区二区精品葵司在线| 一级特黄大欧美久久久| 国产精品综合一区二区| 艹b视频在线观看| 中文字幕日韩专区| 欧洲一区二区三区在线| 国产精品一区二区91| 成人影院在线| 国产在线一区不卡| 欧美精品一二区| 亚洲国产欧美一区| 噜噜噜噜噜在线视频| 91极品视频在线观看| 婷婷综合另类小说色区| 欧美不卡高清一区二区三区| 国产传媒在线观看| 国产在线|日韩| 九色丨蝌蚪丨成人| 影音先锋日韩在线| 97影院理论| 国产黄在线看| 米奇在线777| 好看的日韩精品| 久久99热精品这里久久精品| 日韩午夜激情| 91精品久久久久久9s密挑|