五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

SQL 層功能改進 - lookupJoin 的優(yōu)化

2023-02-28 14:49 作者:KaiwuDB  | 我要投稿

一、傳統(tǒng) join 算法


lookupJoin 是 join 查詢的一種,傳統(tǒng) join 算法為:


1. ?遍歷?A 表,讀取一條數(shù)據(jù) r

2.? 遍歷 B 表,對于每條數(shù)據(jù),與 r 進行 join 操作

3. ?重復(fù) 1、2 操作,直到 A 表遍歷完所有數(shù)據(jù)


二、lookupJoin

現(xiàn)有的 lookupJoin 流程為:


1. ?遍歷 A 表,讀取一條數(shù)據(jù) r

2. ?通過 join key 以及數(shù)據(jù) r 構(gòu)造 B 表數(shù)據(jù)取值范圍

3. ?通過構(gòu)造的取值范圍對 B 表進行讀取操作,將讀取出的數(shù)據(jù)與 r 進行 join 操作,返回結(jié)果


通過這樣的做法,join 可減少對 B 表全表掃描的操作,提升執(zhí)行效率。但是執(zhí)行 lookupJoin 操作的前提是在 B 表中存在 join key 的索引,否則無法對 B 表構(gòu)造取值范圍。


三、分布式 lookupJoin

1. ?分布式 lookupJoin 介紹:


以往 KaiwuDB 集群在執(zhí)行 lookupJoin 操作時,會提取 A 數(shù)據(jù),根據(jù) A 表數(shù)據(jù)發(fā)送 scan 請求去別的節(jié)點讀取數(shù)據(jù)。這樣會導(dǎo)致大量結(jié)果數(shù)據(jù)集中在 A 表分布的節(jié)點,沒有充分利用多節(jié)點并行執(zhí)行的優(yōu)勢。


現(xiàn)在,我們將 A 表數(shù)據(jù)提前通過 hash 重分布路由到多個節(jié)點再并行執(zhí)行 lookupJoin 操作;這樣不僅可以提高執(zhí)行效率,還可以使結(jié)果集在多個節(jié)點按照 hash key 預(yù)分布。

圖 1


如圖 1 所示,執(zhí)行 select * from a join b on a.a = b.a 的操作時 B 表中有 join key 的索引 b_a_idx,改進后單節(jié)點 lookupJoin 變?yōu)槿?jié)點執(zhí)行 lookupJoin 操作,并且使 join 結(jié)果集按照 join 列在節(jié)點間 hash 分布。


2. ?分布式 lookupJoin 對分布式執(zhí)行產(chǎn)生的效果:


分布式 lookupJoin 可以使 join 結(jié)果集按照 join 列在節(jié)點間呈現(xiàn) hash 分布,大大提高了集群節(jié)點算力利用率,減少 hash 重分布的次數(shù),縮短整體 query 執(zhí)行時間。


圖 2


如圖 2 所示,在圖 1 的基礎(chǔ)上把 join 結(jié)果與 C 表再進行 join 查詢:select * from a,b,c where a.a=b.a and a.a = c.a ,模擬復(fù)雜查詢場景。由于在分布式 lookupJoin 查詢后,數(shù)據(jù)按照 join key 已經(jīng)在三節(jié)點上 hash 分布了,所以在執(zhí)行與 C 表的 join 操作時,只需要 hash 重分布 C 表的數(shù)據(jù),減少了 hash 重分布的次數(shù),提高了執(zhí)行效率。


3. ?分布表的 lookupJoin:


分布表是一種特殊表,表中數(shù)據(jù)按某列的 hash 值分布在各個節(jié)點上,如果分布表的分布列與 hash join 列正好一致,在執(zhí)行分布式 lookupJoin 時可以直接在各個節(jié)點并行執(zhí)行 lookupJoin,省去了 hash 分布的操作。



SQL 層功能改進 - lookupJoin 的優(yōu)化的評論 (共 條)

分享到微博請遵守國家法律
文成县| 鄂尔多斯市| 旺苍县| 达日县| 邵阳县| 隆安县| 铜山县| 称多县| 西昌市| 肃宁县| 清远市| 股票| 独山县| 德阳市| 建水县| 清新县| 论坛| 保山市| 宜春市| 资阳市| 绥化市| 甘南县| 兴安盟| 湄潭县| 错那县| 肥东县| 吴江市| 额济纳旗| 合阳县| 福州市| 磴口县| 开江县| 卓资县| 昌图县| 涟水县| 浑源县| 太康县| 千阳县| 广平县| 文成县| 灯塔市|