CloudberryDB什么条件下使用Runtime Filter

CloudberryDB什么条件下使用Runtime Filter

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

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

f0a86300f9d0e1f7c16d234b659a8da5.png

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子路径。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yzs87

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值