StarRocks案例3: 通过[broadcast] 优化慢SQL

news2024/11/24 17:53:12

文章目录

  • 一. 问题描述
  • 二. 解决方案
  • 三. 一些拓展

一. 问题描述

最近在使用StarRocks的时候,发现一个问题

table_a 10W 左右数据,通过where条件过滤数据后 剩下 10行数据。
table_b 5亿左右数据,通过where过滤条件后 剩下 5kw 数据。

table_a 通过关联字段 与 table_b 进行join,然后再进行group by
table_b join后其实只剩下少量的数据,进行聚合运算,应该也不会太慢。

但是实际情况是 table_b 居然是扫描了 5kw数据后,在于table_a 进行join,每次执行消耗的资源非常大

原始SQL:

with t1 as
(
select  key1, value1
  from table_a 
 order by value1 desc
 limit 10
),
t2 as 
(
select key2,value2,value3,value4
  from table_b
 where value2 > 100
)
select t1.key1,
          sum(t2.value3),
          sum(t2.value4)
   from t2
 join t1
on t1.key1 = t2.key2
group by t1.key1;

运行情况:
扫描数据量: 5千万
执行时间: 15秒

二. 解决方案

通过explain查看了执行计划,发现了table_b 访问的行数太多了
因为explain里面的计划有时候存在偏差,所以还是开启了一个query profile,看到访问的数据量
image.png

调优SQL:

with t1 as
(
select  key1, value1
  from table_a 
 order by value1 desc
 limit 10
),
t2 as 
(
select key2,value2,value3,value4
  from table_b
 where value2 > 100
)
select t1.key1,
          sum(t2.value3),
          sum(t2.value4)
   from t2
 join [broadcast] t1
on t1.key1 = t2.key2
group by t1.key1;

image.png

三. 一些拓展

Join分布式执行选择 :

  1. BroadCast Join:将右表全量发送到左表的HashJoinNode
  2. Shuffle Join:将左右表的数据根据哈希计算分散到集群的节点之中
  3. Colocate Join:两个表的数据分布都是一样的,只需要本地join即可,没有网络传输开销。
  4. Bucket Shuffle Join:join的列是左表的数据分布列(分桶键),所以相比于shuffle join只需要将右表的数据发送到左表数据存储计算节点。
  5. Replicated Join:右表的全量数据是分布在每个节点上的(也就是副本个数和BE节点数量一致),不管左表怎么分布,都是走本地Join。没有网络传输开销。

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

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

相关文章

java物流快递寄件配送信息管理系统springboot+vue

物流信息管理系统分为管理员功能模块、配送员功能模块和用户功能模块三大部分,下面将对这三大功能模块分别进行介绍。 管理员功能模块:管理员登录后可对系统进行全面管理,管理员登录后主要实现的功能模块包括个人中心、用户管理、配送员管理、…

Deno:下载安装示例和打包为可执行文件

Deno:一个 安全的 JavaScript 和 TypeScript 运行时环境 目录 文档安装DenoHello World将程序打包成可执行程序 文档 官方文档 https://deno.com/manual 安装Deno Deno的解释器是一个可执行的单文件,下载解压即可使用 1、下载Deno 下载地址&#xf…

NFC无源标签协议

1、NFC写图片数据命令 无源NFC接口基于ISO/IEC 14443-3 A类标准; 命令起始地址结束地址数据 11164 67字节,每次写入的命令和地址都是一样的; 第一包数据必须发送该字符串数据"picksmart&M1&H128&W296&S1&C1"&#xff…

【C++】C++ 中的 IO 流

文章目录 一、C语言的输入输出二、什么是流三、C IO 流1、C 标准 IO 流2、C 文件 IO 流 四、stringstream 介绍 一、C语言的输入输出 在C语言中我们使用最频繁的输入输出方式是 scanf () 与 printf(): scanf():从标准输入设备 (键盘) 读取数据&#xf…

数据库优化之常用的show table status及ALTER TABLE 重建表

文章目录 ⭐️ MySQL优化-碎片优化一、show table status from db_name【 如何判断是否有碎片?】1、碎片查询分析2、产生碎片的原因 二、MySQL 的表空间设置和优化策略【 如何清理碎片?】1、innodb_file_per_table 参数设置为 ON(基本上是默认…

从小白到大佬,入门Linux系统收发网络数据包的秘密/

Linux 服务器收到网络数据包,需求经过哪些处置,一步步将数据传给应用进程的呢?应用进程发送数据包时,Linux 又是如何操作将数据包发送进来的呢?今天我们就来聊聊这个话题。 在准备好接纳网络数据包之前,Li…

python---基础小总结

1.常量和布尔值相加 当常量和布尔值相加的时候,如果是True就视为1来和常量相加. 反之,如果是False的话就视为0和常量相加. 但是这样的操作是没有任何意义的! 2.EG:以下情况是会报错的! 3.EG:加不加分号都可以,但是最好不加

相机的格式

图片的格式大体上可以分为yuv格式和RGB格式,以及png,jpg格式; 其中yuv格式对应的摄像头的格式可以是YUYV、UYVV、YVYU、VYUY; rgb格式的图片对应的摄像头格式为RGB,BGR,ARGB8888格式; 一、RGB8888和ARGB8888像素格式如果搞混了…

网站反爬虫策略的分析与研究

随着互联网的发展,爬虫技术也越来越成熟,越来越多的网站开始采取反爬虫策略来保护自己的数据和资源。以下是网站反爬虫策略的分析与研究: IP封禁:网站可以通过封禁某些IP地址来防止爬虫的访问。这种方法比较简单,但是容…

使用ChatGPT设计多选题

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

Spring-Retry实现及原理

前言 重试,其实我们其实很多时候都需要的,为了保证容错性,可用性,一致性等。一般用来应对外部系统的一些不可预料的返回、异常等,特别是网络延迟,中断等情况。还有在现在流行的微服务治理框架中&#xff0…

PDF4NET 13.1.0 Crack

PDF4NET 13.1.0 添加对云多边形和云方形注释的支持。 2023 年 6 月 1 日 - 16:50 新版本 特征 PDF4NET 添加了对 Cloud polygon 和 Cloud square 注释的支持。在文本标记注释中添加了对四点的支持。重大变化:重构了圆形、方形、折线和多边形注释的边框。PDF4NET.Ren…

Linux-线程基础

Linux线程基础 一,线程概念什么是线程Linux如何实现的线程 二,页表与虚拟内存虚拟内存多级页表 三,线程的特点线程的优点线程的缺点线程异常线程用途线程与进程比较 四,线程控制创建线程线程终止线程等待线程取消线程分离 五&…

python+vue宠物用品商城网站系统3zy71

依照这一现实为基础,设计一个快捷而又方便的网上宠物管理系统是一项十分重要并且有价值的事情。对于传统的宠物管理控制模型来说,在线宠物管理系统具有许多不可比拟的优势,首先是快速更新宠物分类、宠物信息、热销排行榜、宠物寄养&#xff0…

【嵌入式烧录/刷写文件】-1.8-S19文件转换为Hex文件

案例背景(共5页精讲): 有如下一段Motorola S-record(S19/SREC/mot/SX)文件,将其转换为Hex文件。 S0110000486578766965772056312E30352EA6 S123910058595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F70717273747576775B S123912078797A7B7C7D7E7F8081…

CodeWhisperer 初体验

今年算是 AI 正式破圈的一年,无数的工具,产品横空出世。无论在面向企业的大语言模型,还是帮助个人的 AI 工具,数不胜数。其中关于 AI 编程助手领域,近年来也涌现了很多不错的产品,例如 Copilot, Cursor, 还…

网络爬虫技术在搜索引擎中的应用

网络爬虫技术在搜索引擎中扮演着非常重要的角色,主要应用在以下几个方面: 网页抓取:搜索引擎需要从互联网上抓取大量的网页,以建立自己的索引库。网络爬虫技术可以帮助搜索引擎快速、高效地抓取网页。 网页解析:搜索引…

vue 自适应的方法

1、使用 filter来处理。 2、使用vue3.x中的 filter ()方法,但是要注意 filter ()方法的返回是一个字符串,在进行渲染时可能会有问题。 3、使用 react. js中的 require ()方法&#x…

实时数仓中数据实时输出的思考与实现

随着数据量不断增长以及提升企业竞争力的需求增长,实时数仓已经成为了许多业务和组织的重要数据架构之一。在实时数仓中,数据实时输入和数据实时分析是关键步骤,但同样重要的是如何将处理后的数据输出到各种目标上。本文将探讨实时数仓中数据…

亚马逊正常购物下单流程是怎么样的?

当您想要在亚马逊上购物时,您可以按照以下步骤进行: 1、登录亚马逊账户:在亚马逊的官方网站上,使用您的亚马逊账户进行登录。如果您还没有账户,可以在网站上注册一个新账户。 2、浏览商品:在亚马逊首页上&…