SQL 层功能改进 - lookupJoin 的优化

news2024/11/13 10:17:35

一、传统 join 算法

lookupJoin 是 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

如图 1 所示,执行 select * from a join b on a.a = b.a 的操作时 B 表中有 join key 的索引 b_a_idx,改进后单节点 lookupJoin 变为三节点执行 lookupJoin 操作,并且使 join 结果集按照 join 列在节点间 hash 分布。

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 分布的操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/378132.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在 WIndows 下安装 Apache Tinkerpop (Gremlin)

一、安装 JDK 首先安装 Java JDK,这个去官网下载即可,我下载安装的 JDK19(jdk-19_windows-x64_bin.msi),细节不赘述。 二、去 Tinkerpop 网站下载 Gremlin 网址:https://tinkerpop.apache.org/ 点击下面…

用cpolar发布本地的论坛网站 1

网页论坛向来是个很神奇的地方,曾经的天涯论坛和各种BBS,大家聚在在一起讨论某个问题,也能通过论坛发布想法,各种思维碰撞在一起,发生很多有趣的故事,也产生了很多流传一时的流行语录。当然,如果…

推荐5款免费无广告的精品软件

检查一下你最近安装的软件,他们是不是都一样无法避免最终被你打入冷宫的命运?我们明明很懂“在精不在多”的道理,却依然让我们的电脑塞满了形形色色无用的软件。你需要知道的是,如何找到一款适合自己且真正实用的电脑软件。 1.多…

元宇宙营业厅,数字技术融合,赋能实体经济

在我国数字经济与虚拟服务市场规模扩大下,元宇宙营业厅强势来袭,从多场景、多内容,深耕高效协同的特色功能,基于多元化、灵活的交互体验,更大程度上解决线上业务办理抽象繁琐,线下业务办理的时空受限、业务…

4.Spring【Java面试第三季】

4.Spring【Java面试第三季】前言推荐4.Spring27_Aop的题目说明要求Spring的AOP顺序AOP常用注解面试题28_spring4下的aop测试案例业务类新建一个切面类MyAspect并为切面类新增两个注解:spring4springboot1.5.9pom测试类29_spring4下的aop测试结果aop正常顺序异常顺序…

求极限方法总结

1.利用四则运算法则求极限 2.利用两个重要极限求极限 //0除以0型 //1的无穷次方型 3.利用等价无穷小替换替换求极限 //在等价替换时注意和差项 4.利用洛必达法则求极限 5.利用夹逼准则求极限 6.利用单调有界数列极限准则求极限 7.利用无穷小的性质求极限 8.利用函数的连续性…

来面试阿里测开工程师,HR问我未来3-5年规划,我给HR画个大饼。

在面试的过程中是不是经常被面试官问未来几年的职业规划?你会答吗?是不是经常脑袋里一片空白,未来规划?我只是想赚更多的钱啊,哈哈哈,今天我来教大家,如何给面试官画一个大饼,让他吃的不亦乐乎…

MySQL高级第二讲

目录 二、MySQL高级02 2.1 触发器 2.1.1 触发器介绍 2.1.2 创建触发器 2.2 MySQL的体系结构 2.3 存储引擎 2.3.1 存储引擎概述 2.3.2 各种存储引擎特性 2.3.3 InnoDB 2.3.4 MyISAM 2.3.5 MEMORY 2.3.6 MERGE 2.3.7 存储引擎的选择 2.4 优化sql 2.4.1 查看sql执行…

二分查找重复情况 找最左边或最右边的位置下标

目录二分找最左边二分找最右边综合应用(剑指offer)二分找最左边 核心思想: 先mid (lr)/2每次向左取整; 然后命中target的时候,右边界逼近到mid; 因为每次mid向左取整,mid命中target时l代替mid位置,则循环迭代最后会卡出重复数字最左侧的位置…

糖化学试剂55520-67-7,5-vinyl-2-deoxyuridine,5-乙烯基-2-脱氧尿苷特点分析说明

5-vinyl-2-deoxyuridine(5-VdU),5-vinyl-2-deoxyuridine,5-Vinyldeoxyuridine5-乙烯基-2-脱氧尿苷 | CAS:55520-67-7 | 纯度:95%试剂信息:CAS:55520-67-7所属类别:糖化学分子量:C11H…

信息系统基本知识(一)

1.1 信息系统与信息化 信息论已发展成为一个内涵非常丰富的学科,与控制论和系统论并称为现代科学的“三论” 1.1.1 信息的基本概念 香农指出:信息是能够用来消除不确定性的东西。信息量的单位:比特 信息的特征 客观性:信息是…

四信塔式起重机监控系统应用方案

方案背景 塔式起重机是当前工业建设进行起重运输作业的重要设备,其设备性能、参数、技术指标的可靠性都关系起重机设备的危险,塔式起重机安全事故关系国计民生、危害面广,给国家财产和生命安全带来严重损失。 目前众多塔式起重机司机虽然有上…

界面开发(1) --- PyQt5环境配置

PyQt5环境配置 第一步:首先安装社区版Pycharm 下载地址:https://www.jetbrains.com/pycharm/download/#sectionwindows 第二步:安装Anaconda3,配置虚拟环境 下载地址:https://www.anaconda.com/ 第三步&#xff1…

win10安装docker

1.win10安装docker,前提必须是要安装WSL2。 现在Docker Desktop默认使用WSL 2来运行,而不是以前的Hyper-V。 WSL2 全称是Windows Subsystem on Linux。意思是,在win10,可以直接启动一个Linux。因为docker依赖Linux内核。 可查看…

洛谷 U91193:棋盘覆盖问题 ← 分治法

【题目来源】https://www.luogu.com.cn/problem/U91193【问题描述】 在一个2^k * 2^k(k≥0)个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为一特殊方格。现在用4种不同形状的 L型(占3小格)骨牌覆…

java 元数据 和 元注解

基本介绍三种基本注解OverrideDeprecatedSuppressWarnings四种元注解RetentionTargetDocumentedInherited一、基本介绍1.概述java注解(Annotation)[ˌ nəˈ teɪʃn],又称java标注,也被称为元数据(关于数据的数据&…

Kotlin学习:5.2、异步数据流 Flow

Flow一、Flow1、Flow是什么东西?2、实现功能3、特点4、冷流和热流5、流的连续性6、流的构建器7、流的上下文8、指定流所在协程9、流的取消9.1、超时取消9.2、主动取消9.3、密集型任务的取消10、背压和优化10.1、buffer 操作符10.2、 flowOn10.3、conflate 操作符10.…

Substrate 基础 -- 教程(Tutorials)

官网 github DOC 面向未来的区块链框架 Substrate 使开发人员能够快速、轻松地构建适合任何用例的未来 证明区块链(future proof blockchains)。 Substrate 文档包括区块链构建器(blockchain builders)和parachain 项目团队的概念、过程和参考信息。…

Nginx面试问题总结

1. 什么是Nginx?Nginx是一个 轻量级/高性能的反向代理Web服务器,他实现非常高效的反向代理、负载平衡,他可以处理2-3万并发连接数,官方监测能支持5万并发,现在中国使用nginx网站用户有很多,例如&#xff1a…

阿里淘宝新势力造型合伙人P8、年薪百万的欧阳娜娜也躲不过的魔鬼面试,看的我心服口服

阿里淘宝新势力造型合伙人P8、年薪百万的欧阳娜娜跳槽了,这不是关键。 她参加了网易有道明星语音录音员/代言人的面试,这也不是关键。 关键是她教科书式的面试过程,狠狠地给我们上了一课。 我是无意间刷到的这个视频的时候,就一…