SQL 層功能改進 - lookupJoin 的最佳化
一、傳統 jon 演算法
lo okupJoin 是 join 查詢的一種, 傳統 join 演算法為:
1. 遍歷 A 表,讀取一條資料 r
2. 遍歷 B 表,對於每條資料,與 r 進行 join 操作3. 重複 1、2 操作,直到 A 表遍歷完所有資料
二、lookupJoin
現有的 lookupJoin 流程為:
1. 遍歷 A 表,讀取一條資料 r
2. 透過 join key 以及資料 r 構造 B 表資料取值範圍
3. 透過構造的取值範圍對 B 表進行讀取操作,將讀取出的資料與 r 進行 join 操作,返回結果
透過這樣的做法,join 可減少對 B 表全表掃描的操作,提升執行效率。但是執行 lookupJoin 操作的前提是在 B 表中存在 join key 的索引,否則無法對 B 表構造取值範圍。
三、分散式 lookupJoin
1. 分散式 lookupJoin 介紹:
以往 KaiwuDB 叢集在執行 lookupJoin 操作時,會提取 A 資料,根據 A 表資料傳送 scan 請求去別的節點讀取資料。這樣會導致大量結果資料集中在 A 表分佈的節點,沒有充分利用多節點並行執行的優勢。
現在,我們將 A 表資料提前透過 hash 重分佈路由到多個節點再並行執行 lookupJoin 操作;這樣不僅可以提高執行效率,還可以使結果集在多個節點按照 hash key 預分佈。
圖 1
2. 分散式 lookupJoin 對分散式執行產生的效果:
分散式 lookupJoin 可以使 join 結果集按照 join 列在節點間呈現 hash 分佈,大大提高了叢集節點算力利用率,減少 hash 重分佈的次數,縮短整體 query 執行時間。
圖 2
如圖 2 所示,在圖 1 的基礎上把 join 結果與 C 表再進行 join 查詢:select * from a,b,c where a.a=b.a and a.a = c.a ,模擬複雜查詢場景。由於在分散式 lookupJoin 查詢後,資料按照 join key 已經在三節點上 hash 分佈了,所以在執行與 C 表的 join 操作時,只需要 hash 重分佈 C 表的資料,減少了 hash 重分佈的次數,提高了執行效率。
3. 分佈表的 lookupJoin:
分佈表是一種特殊表,表中資料按某列的 hash 值分佈在各個節點上,如果分佈表的分佈列與 hash join 列正好一致,在執行分散式 lookupJoin 時可以直接在各個節點並行執行 lookupJoin,省去了 hash 分佈的操作。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70027415/viewspace-2939595/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 深入解析LLaMA如何改進Transformer的底層結構ORM
- [20210428]改進pr.sql指令碼.txtSQL指令碼
- kingbase SQL最佳化案例 ( union遞迴 改 cte遞迴 )SQL遞迴
- Android Studio3.4新功能和改進Android
- 深度剖析阿里巴巴對 Apache Flink 的最佳化與改進阿里Apache
- SQL最佳化案例-改變那些CBO無能為力的執行計劃(一)SQL
- SQL最佳化SQL
- 最佳化sql的利器SQLTSQL
- MySQL的SQL等價改寫MySql
- SQL Server最佳化標量函式改寫內聯表值函式SQLServer函式
- 瞭解Postgres 14新功能:效能和監控改進
- QT中改變元件的層級QT元件
- 從系統功能入手,談知識付費仍需改進的地方
- 詳解SQL中Groupings Sets 語句的功能和底層實現邏輯SQL
- 使用sql tuning advisor最佳化sqlSQL
- 騰訊AI Lab提出翻譯改進模型Transformer的3個最佳化方法AI模型ORM
- 微軟Windows 10 build 21354 新增"我的興趣"和其他功能的改進!微軟WindowsUI
- SQL最佳化1SQL
- SQL最佳化方案SQL
- sql最佳化技巧SQL
- 最佳化SQL Server索引的技巧SQLServer索引
- sql最佳化的幾種方式SQL
- MySQL8 的分割槽功能相比 mysql5.7 有什麼改進?MySql
- 日本玩家對次世代PS最期待的功能與改進是什麼?
- SQL改寫的方法,select group by sumSQL
- SQL增刪改查SQL
- 使用vplex的mirror功能對儲存層LUN進行資料的遷移
- 如何最佳化並改進美顏sdk人臉識別技術?
- 【慢SQL效能最佳化】 一條SQL的生命週期SQL
- DFA改進
- SQL 最佳化手冊SQL
- 小米 sql 最佳化工具SQL
- 08SQL最佳化SQL
- SQL語句最佳化SQL
- SQL最佳化問題SQL
- 一種提升SQL改寫效率的方法SQL
- oracle SQL最佳化器SQL Tuning Advisor (STA)OracleSQL
- DB2 SQL改寫DB2SQL