• 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
    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    Java 8 新特性解读及应用实践
    Spring Framework 6.1 正式 GA
    Oracle 的hint用法
    音频信号处理
    反射修改其它 APP SharedPreferences 数据
    java计算机毕业设计计算机专业招聘网站源码+mysql数据库+系统+lw文档+部署
    本地构建spring源码
    ModelSim® SE Command Reference Manual : find命令的用法
    Dapr 集成 Open Policy Agent 实现 接口的访问控制
    SpringBoot对接OpenAI
  • 原文地址:https://blog.csdn.net/JH_Zhai/article/details/134705401