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.mzph.cn/news/186826.shtml

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

相关文章

php请求okx接口获取比特币价格数据、k线数据

php请求okx接口获取比特币价格数据 环境配置请求头、签名设置签名配置代理 全部代码 环境 我本地用的是thinkphp框架和guzzle 安装guzzle composer require guzzlehttp/guzzle 配置请求头、签名 我们需要准备api_key,secret_key,passphrase api_key…

计网Lesson5 - MAC 地址与 ARP

文章目录 M A C MAC MAC 地址1. M A C MAC MAC 地址的格式 2. M A C MAC MAC 地址的获取3. A R P ARP ARP 协议4. A R P ARP ARP 缓存5. R A R P RARP RARP M A C MAC MAC 地址 1. M A C MAC MAC 地址的格式 每个网卡都有一个 6 6 6 字节的 M A C MAC MAC 地址 M A C…

爬虫从入门到精通(21) |字体加密通杀方案

文章目录 一、了解什么是字体加密二、Python打开字体加密文件三、字体加密的通杀1.静态的字体文件固定顺序的字体2.其他动态变化情况 一、了解什么是字体加密 字体加密是页面和前端字体文件想配合完成的一个反爬策略。通过css对其中一些重要数据进行加密,使我们在代…

【开源视频联动物联网平台】视频接入网关的用法

视频接入网关是一种功能强大的视频网关设备,能够解决各种视频接入、视频输出、视频转码和视频融合等问题。它可以在应急指挥、智慧融合等项目中发挥重要作用,与各种系统进行对接,解决视频能力跨系统集成的难题。 很多视频接入网关在接入协议…

zookeeper 单机伪集群搭建简单记录(实操课程系列)

本系列是zookeeper相关的实操课程,课程测试环环相扣,请按照顺序阅读测试来学习zookeeper 1、官方下载加压后,根目录下新建data和log目录,然后分别拷贝两份,分别放到D盘,E盘,F盘 2、data目录下面…

hive创建ES外部表过程中的问题

一、缺少jar包:httpclient 报错: “HiveServer2-Handler-Pool: Thread-696” java.lang.NoClassDefFoundError: org/apache/commons/httpclient/protocol/ProtocolSocketFactory 需要加载commons-httpclient-3.1.jar 二、缺少jar包:eshado…

微服务实战系列之EhCache

前言 书接前文,继续深耕。上一篇博主对Redis进行了入门级介绍,大体知道了Redis可以干什么以及怎么使用它。 今日博主继续带着大家学习如何使用EhCache,这是一款基于Java的缓存框架。 微服务实战系列之Redis微服务实战系列之Cache微服务实战…

指针(2)

函数指针数组 函数指针数组是一个用来存放函数指针(地址)的数组。 如上图,是将两个函数指针存入数组中。如何写函数指针数组名呢?我们可以先写出函数指针类型int (*)(int,int)然后在(*)里面加上数组名[]即可。 指向函数指针数组…

ubuntu22.04识别CH340的问题汇总

一、目的 自己的电脑装的是双系统,ubuntu22.04安装了很久好久没有(WSL2确实解决了频繁依赖linux的问题)。昨天尝试搞一下STM32MP135的系统搭建,开始启用ubuntu22.04。但是遇到了很多问题,其中一个问题就是CH340的驱动…

Linux安全配置

进入ssh配置文件 vim /etc/ssh/sshd_config将port 22中的端口号改为5001 重启ssh服务 systemctl restart sshd拓展 sh与bash iptable与firewall ssh与sshd vps与ssh 参考: 【安全-SSH】SSH安全设置 - CSDN AppLinux VPS服务器SSH端口一键修改脚本​Linux脚本…

【课设大报告】 基于matlab gui设计的三极管学习系统

目录 设计背景 1.1设计目的 2.设计方法 2.1使用软件工具 2.2设计流程 3.模块界面设计及代码分析 3.1登录 3.2注册 3.3主菜单 3.4三极管介绍 3.5进制转换 3.6单位换算 3.7绘图 4.不足和改善 5.总结 设计背景 1.1设计目的 本程序旨在帮助为了帮助学生了解三极管…

C语言——有一个3*4的矩阵,要求求出其中值最大的那个元素的值,以及其所在的行号和列号

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int i,j,row0,colum0,a[3][4]{{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};int maxa[0][0];for ( i 0; i < 3; i)//行&#xff08;row&#xff09;{for ( j 0; j < 4; j)//列&#xff08;colum&#xf…

【Python】基础练习题_组合数据类型_2

dictMenu f’卡布奇洛’:32,‘摩卡’:30,‘抹茶蛋糕’:28,‘布朗尼’:26}&#xff0c; dictMenu 中存放了你的双人下午套餐&#xff08;包括咖啡2份和点心2份)的价格,请编写程序,让Python帮忙计算并输出消费总额。 dictMenu {卡布奇洛: 32, 摩卡: 30, 抹茶蛋糕: 28, 布朗尼: 2…

【云平台】STM32微信小程序阿里云平台学习板

【云平台】STM32微信小程序阿里云平台学习板 文章目录 前言一、立创EDA&#xff08;硬件设计&#xff09;1.主控STM32F103C8T62.ESP8266模块3.温湿度模块4.光照强度模块5.OLED显示模块6.PCB正面7.PCB反面8.3D视角正面9.3D视角反面 二、【云平台】STM32微信小程序阿里云平台学习…

CentOS7 网络配置

前言&#xff1a; 安装虚拟机后&#xff0c;在虚拟机ping www.baidu.com ping不通。 一、centos7配置IP地址有两种方法&#xff1a; 动态获取IP&#xff08;不推荐使用&#xff09;设置静态ip&#xff08;推荐&#xff09; 二、centos7配置静态IP&#xff1a; 第一步&#xff…

使用npm发布typescript包

使用npm发布typescript包 什么是NPM NPM&#xff08;节点包管理器&#xff09;是 JavaScript 编程语言的默认包管理器。NPM 注册表是一个公共存储库&#xff0c;充当存储和分发 JavaScript 包的中心枢纽。它允许开发人员轻松安装、管理和共享可重用的 JavaScript 代码包&…

python实现two way ANOVA

文章目录 目的&#xff1a;用python实现two way ANOVA 双因素方差分析1. python代码实现1 加载python库2 加载数据3 统计样本重复次数&#xff0c;均值和方差&#xff0c;绘制箱线图4 查看people和group是否存在交互效应5 模型拟合与Two Way ANOVA&#xff1a;双因素方差分析6 …

LeetCode(34)有效的数独【矩阵】【中等】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 36. 有效的数独 1.题目 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 &#xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗…

[原创][3]探究C#多线程开发细节-“用ConcurrentQueue<T>解决多线程的无顺序性的问题“

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XXQQ: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi…

Unity随笔1 - 安卓打包JDK not found

今天遇到一个很奇怪的事情&#xff0c;之前可以正常打安卓包&#xff0c;但是突然报错如下&#xff1a; 提示很明显&#xff0c;找不到JDK了。可是我在下载Unity的时候明明安装了所有需要的组件&#xff0c;为什么今天突然不行。 看了眼Unity hub里面&#xff0c;没问题。 那就…