ClickHouse并行哈希连接是否支持RIGHT JOIN?实测存疑咨询
ClickHouse并行哈希连接是否支持RIGHT JOIN?
问题背景
我阅读了ClickHouse连接算法相关系列文章,文中表格显示**并行哈希连接(Parallel hash join)**不支持RIGHT JOIN。但在ClickHouse Cloud环境测试时未报错,且并行哈希连接性能更优,测试详情如下:
测试查询1(自动选择连接算法)
SELECT * FROM table_a RIGHT JOIN table_b ON table_a.id = table_b.id SETTINGS join_algorithm = 'auto', max_threads = 2, max_bytes_in_join = 50000000000;
- 执行时长:101秒
- 内存占用:6.43 GiB
测试查询2(指定并行哈希连接)
SELECT * FROM table_a RIGHT JOIN table_b ON table_a.id = table_b.id SETTINGS join_algorithm = 'parallel_hash', max_threads = 2, max_bytes_in_join = 50000000000;
- 执行时长:56秒
- 内存占用:25.63 GiB
请问:并行哈希连接是否已支持RIGHT JOIN?还是我的操作存在问题?
更新:执行计划(EXPLAIN结果翻译后)
查询1的执行计划
表达式(字段投影 + 连接后丢弃无用列) 连接(JOIN 填充右表优先) 表达式(连接操作 + 列名转换为标识符) 从MergeTree读取(table_a) 表达式(连接操作 + 列名转换为标识符) 从MergeTree读取(table_b)
查询2的执行计划
表达式(字段投影 + 连接后丢弃无用列) 连接(JOIN 填充右表优先) 表达式(连接操作 + 列名转换为标识符) 从MergeTree读取(table_a) 表达式(连接操作 + 列名转换为标识符) 从MergeTree读取(table_b)
解答
从测试结果和执行计划可以明确:当前ClickHouse Cloud版本已支持并行哈希连接处理RIGHT JOIN,你的操作不存在问题。
- 兼容性验证:指定
parallel_hash算法后查询正常执行且性能提升,说明该算法已兼容RIGHT JOIN的逻辑。 - 执行计划佐证:两个查询的执行计划都包含
JOIN FillRightFirst,这是ClickHouse处理RIGHT JOIN的核心标识,证明无论选择哪种连接算法,底层都正确触发了右连接的填充逻辑。 - 文档版本差异:你看到的旧文章可能基于早期ClickHouse版本,而ClickHouse Cloud会持续更新到最新稳定版,并行哈希连接对RIGHT JOIN的支持是后续版本新增的特性。
另外注意:并行哈希连接性能提升的代价是内存占用大幅增加(从6.43 GiB升至25.63 GiB),这是因为它会并行构建多个哈希表,实际使用时需要结合集群内存资源情况进行选择。
内容的提问来源于stack exchange,提问作者Spacez
相关产品推荐
相关产品推荐

