Clickhouse Join

ClickHouse中的Hash Join, Parallel Hash Join, Grace Hash Join
https://www.cnblogs.com/abclife/p/17579883.html
https://clickhouse.com/blog/clickhouse-fully-supports-joins-full-sort-partial-merge-part3

总结
本文描述并比较了ClickHouse中基于内存哈希表的3种连接算法。

哈希连接算法速度快,是最通用的算法,支持所有连接类型和严格性设置,但内存哈希表的创建是单线程的,如果右侧表非常大,就会成为瓶颈。

并行哈希连接算法通过同时创建多个哈希表,在右侧表很大的情况下速度更快,但需要更多内存。

Grace哈希连接算法是一种非内存限制版本,它将输入数据分割成多个数据桶,其中一些数据桶先存到到磁盘,然后在内存中按顺序处理。

下图总结了本文章中所有连接查询运行的内存消耗和执行时间(max_threads设置为30,右侧表为大表):

在这里插入图片描述

Grace哈希连接算在牺牲更多执行时间的前提下,内存消耗量可以通过增加数据桶数量以线性方式减少。

请注意,正如前面提到的和下面演示的那样,ClickHouse总是将grace_hash_join_itial_buckets的设置值向上舍入到最接近的2的幂次。因此,将grace_hash_join_itial_buckets设置为3时运行的查询实际上使用了4个初始桶。

选择正确的联接算法(ClickHouse 中对 Join 类型的支持 - Part 5)
https://blog.csdn.net/ClickHouseDB/article/details/132299482
https://clickhouse.com/blog/clickhouse-fully-supports-joins-part1

ClickHouse 联接算法概述
迄今为止,ClickHouse 已开发出以下 6 种联接算法:

Direct join

Hash join

Parallel hash join

Grace hash join

Full sorting merge join

Partial merge join
在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

申请免费的域名SSL证书

1.,选择SSL证书提供商 首先,您需要选择一个提供免费SSL证书的可信赖服务提供商。比如JoySSL就提供了永久免费版本的SSL证书。 2, 注册账户并登录 在选择了JoySSL,您需要在网站上注册一个账户。完成注册后,使用您的账…

uniapp微信小程序实现地图展示控件

最终实现效果: 地图上展示控件,并可以点击。 目录 一、前言 二、在地图上展示控件信息 点击后可进行绘制面图形 1.使用cover-view将控件在地图上展示 2.设置控件样式,使用好看的图标 3.控件绑定点击事件 一、前言 原本使用的是control…

Linux:服务器管理工具宝塔(bt)安装教程

一、简介 bt宝塔Linux面板是提升运维效率的服务器管理软件,支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA等多项服务的管理功能 二、安装 使用 SSH 连接工具,如堡塔SSH终端连接到您的 Linux 服务器后,挂载磁盘,根据系统执…

【EasyExcel】导出excel并支持自定义设置数据行背景颜色等

需求背景: 根据查询条件将列表数据导出,并筛选出满足某个条件的数据,将满足条件的数据的背景颜色设置成黄色。 (本文例子如:name出现的次数大于等于2,将相关数据背景颜色都设置为黄色) …

智慧机场视频监控系统方案:AI智能助力机场智慧运营

一、方案背景 随着人们生活物质水平的上升,人们对机场的需求也日益增多,在民航新建、迁建、扩建机场项目猛增的同时,也需同步配备相应的安防监控系统,以满足民航机场安全管理要求和机场运营业务的高速发展。 二、方案概述 智慧机…

C++学习之路(十四)C++ 用Qt5实现一个工具箱(增加一个Base64图片编码预览功能)- 示例代码拆分讲解

上篇文章,我们用 Qt5 实现了在小工具箱中添加了《Base64加解密功能》功能。为了继续丰富我们的工具箱,今天我们就再增加一个平时经常用到的功能吧,就是「 Base64图片编码预览 」功能。下面我们就来看看如何来规划开发一个这样的小功能并且添加…

把数组中各元素都转换为小写或大写numpy.char.lower()numpy.char.upper()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 把数组中各元素 都转换为小写或大写 numpy.char.lower() numpy.char.upper() [太阳]选择题 请问np.char.lower(arr1)的结果是: import numpy as np a[A,b] print("【显示】a&…

38 - MySQL中InnoDB的知识点

InnoDB 存储引擎作为我们最常用到的存储引擎之一,充分熟悉它的的实现和运行原理,有助于我们更好地创建和维护数据库表。 1、InnoDB 体系架构 InnoDB 主要包括了内存池、后台线程以及存储文件。内存池又是由多个内存块组成的,主要包括缓存磁…

MySQL核心知识点整理大全1-笔记

MySQL 是一种流行的关系型数据库管理系统,它是以C和C语言编写的,最初是由瑞典公司MySQL AB开发的,现在是由Oracle公司维护和支持。MySQL是开源软件,可在Windows、Linux、Mac OS、FreeBSD等各种操作系统上运行。MySQL的主要特点是速…

使用Golang构建高性能网络爬虫

目录 一、Golang的特点 二、构建网络爬虫的步骤 三、关键技术和注意事项 使用协程进行并发处理 使用通道进行协程间的通信 合理控制并发数和处理速度 遵守网站使用协议和法律法规 防止被网站封禁或限制访问 优化网页解析和数据处理 异常处理和错误处理 日志记录和监控…

【云原生系列】Kubernetes知识点

目录 概念 基础架构 单master节点 多master节点 组件 Master节点核心组件 其他组件 请求发送流程 插件 核心资源 调度资源 Pod 创建pod组件间调用流程 pod生命周期: 初始化容器 镜像拉取策略 重启策略 钩子函数 探针 探针的实现方式 DownwardAP…

记录:Unity脚本的编写9.0

目录 射线一些准备工作编写代码 突然发现好像没有写过关于射线的内容,我就说怎么总感觉好像少了什么东西(心虚 那就在这里写一下关于射线的内容吧,将在这里实现射线检测鼠标点击的功能 射线 射线是一种在Unity中检测碰撞器或触发器的方法&am…