暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

CloudberryDB什么条件下使用Runtime Filter

原创 闫宗帅 2024-06-30
144

CloudberryDB什么条件下使用Runtime Filter

前文讲述了CloudberryDB的Runtime Filter两种实现方法。Hash Join时,将内表的值构建hash表的同时将其再构建到布隆过滤器中,然后将该过滤器传递给左子树的RuntimeFilter算子或者下沉到SeqScan算子,但是布隆过滤器的生成、传输及检查会引入额外开销,若不加节制滥用,则可能导致性能下降。CloudberryDB什么条件下才会使用Runtime Filter呢?

生成RuntimeFilter执行计划是由函数try_runtime_filter进行判断,我们看下上下流程:


1、try_runtime_filter为检测是否生成RuntimeFilter算子路径的函数,调用该函数的前提是gp_enable_runtime_filter配置项打开

2、try_runtime_filter能够生成RuntimeFilter路径的条件有4个:

(1)仅支持INNER JOIN、RIGHT JOIN和SEMI JOIN

(2)内表估算的行数需要小于等于10M

(3)不支持by-reference类型

(4)通过该算子至少可以过滤掉外表40%的记录

3、估算出的最终join结果规模保存在runtime_filter_tuples中,当create_hashjoin_path创建hash join路径时,检查到runtime_filter_tuples > 0即创建RuntimeFilter路径,并将它加入到hash join路径的left子路径。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论