「分布式技術(shù)專題」兩種向量化執(zhí)行引擎的實現(xiàn)方法

向量化執(zhí)行引擎

在三種常見的數(shù)據(jù)庫查詢引擎執(zhí)行模型中我們講到了向量化執(zhí)行引擎本質(zhì)上是一種批處理模型帖旨。批處理思想在計算機的世界里經(jīng)常閃閃發(fā)光舒憾。高并發(fā)場景中侥锦,可以把大量的請求合并帮孔,改為調(diào)用批量接口香浩;大數(shù)據(jù)下讀取分布式文件系統(tǒng)時类缤,如果要讀取大量的小文件,可以將這些小文件打成tar包邻吭,或者批量一次打開100~500個文件餐弱;數(shù)據(jù)庫插入數(shù)據(jù)時,修改單條插入為批量插入等囱晴。批處理減少了cpu的中斷次數(shù)膏蚓,可以更加合理的利用資源。

在向量化執(zhí)行引擎模型中畸写,列式存儲占據(jù)著天然的優(yōu)勢:

1驮瞧、壓縮能力的提升。同一列的數(shù)據(jù)類型相同枯芬,壓縮比高论笔。

2、IO總量小千所。壓縮減少了一部分IO狂魔,另外投影操作時,只需要讀取查詢的字段淫痰。

3最楷、支持對某一列進行向量計算捌臊。

通常向量化執(zhí)行引擎都是用在OLAP數(shù)倉類系統(tǒng)瞳遍。而OLTP系統(tǒng),由于使用行存府蔗,并且點查詢居多揩抡,所以向量化執(zhí)行的優(yōu)勢也很難體現(xiàn)出來笼踩。

兩種向量化執(zhí)行引擎的實現(xiàn)

方法一:仍使用火山模型莫矗,將一次一tuple的處理模式咽弦,修改為一次向上返回一組列存行值(例如:100-1000行)處理方式。

compare-row-column

圖1中描述的就是火山模型實現(xiàn)的行存執(zhí)行引擎與列存執(zhí)行引擎胎挎,其中左邊代表的是傳統(tǒng)的行存火山模型,右邊代表的是列存實現(xiàn)的火山模型忆家。

火山模式是從執(zhí)行計劃樹的根節(jié)點開始向葉子節(jié)點遞歸調(diào)用犹菇,然后由葉子節(jié)點掃描節(jié)點,過濾出符合條件的tuple 給上層節(jié)點處理芽卿,AGG算子緩存中間結(jié)果揭芍。

右邊列存執(zhí)行引擎,執(zhí)行邏輯基本上與左邊行存執(zhí)行引擎一致卸例,但是每次掃描處理的是一組列數(shù)據(jù)集合称杨。這樣每次處理的數(shù)據(jù)變多,總體的調(diào)用次數(shù)變少筷转,CPU的利用率得到了提高姑原。

方法二:將整個模型改造成為層次型的執(zhí)行模式,也稱編譯執(zhí)行模型呜舒。

compare-batch

整個執(zhí)行計劃樹從跟節(jié)點到葉子節(jié)點只需要調(diào)用一次锭汛。從葉子節(jié)點開始每一層都是執(zhí)行完所有的操作之后,才向上返回結(jié)果袭蝗。

編譯執(zhí)行模型的缺點就是每一個節(jié)點都需要將數(shù)據(jù)進行緩存唤殴,在數(shù)據(jù)量比較大的情況下,內(nèi)存可能放不下這些數(shù)據(jù)到腥,需要寫盤朵逝。

? 拉取模型 vs 推送模型

方法一的向量化執(zhí)行是自上而下的批量拉取模型;

方法二的編譯執(zhí)行是自低向上的推送模型乡范。

原則上這兩個模型是不相容的配名,二者只能取其一。

但是也有人在嘗試編譯執(zhí)行融合向量化:把查詢樹分解篓足,部分用向量化方式段誊,部分用編譯執(zhí)行方式。

以上為兩種向量化執(zhí)行引擎的實現(xiàn)方法栈拖,「分布式技術(shù)專題」是國產(chǎn)數(shù)據(jù)庫hubble團隊精心整編连舍,專題會持續(xù)更新,歡迎大家保持關(guān)注。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末索赏,一起剝皮案震驚了整個濱河市盼玄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌潜腻,老刑警劉巖埃儿,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異融涣,居然都是意外死亡童番,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進店門威鹿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來剃斧,“玉大人,你說我怎么就攤上這事忽你∮锥” “怎么了?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵科雳,是天一觀的道長根蟹。 經(jīng)常有香客問我,道長糟秘,這世上最難降的妖魔是什么简逮? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮蚌堵,結(jié)果婚禮上买决,老公的妹妹穿的比我還像新娘。我一直安慰自己吼畏,他們只是感情好督赤,可當(dāng)我...
    茶點故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著泻蚊,像睡著了一般躲舌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上性雄,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天没卸,我揣著相機與錄音,去河邊找鬼秒旋。 笑死约计,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的迁筛。 我是一名探鬼主播煤蚌,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了尉桩?” 一聲冷哼從身側(cè)響起筒占,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蜘犁,沒想到半個月后翰苫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡这橙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年奏窑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屈扎。...
    茶點故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡良哲,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出助隧,到底是詐尸還是另有隱情,我是刑警寧澤滑沧,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布并村,位于F島的核電站,受9級特大地震影響滓技,放射性物質(zhì)發(fā)生泄漏哩牍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一令漂、第九天 我趴在偏房一處隱蔽的房頂上張望膝昆。 院中可真熱鬧,春花似錦叠必、人聲如沸荚孵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽收叶。三九已至,卻和暖如春共苛,著一層夾襖步出監(jiān)牢的瞬間判没,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工隅茎, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留澄峰,地道東北人。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓辟犀,卻偏偏與公主長得像俏竞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內(nèi)容