开发者社区> 问答> 正文

什么是Runtime Filter,它在ADB PG中有什么作用?

什么是Runtime Filter,它在ADB PG中有什么作用?

展开
收起
不吃核桃 2024-08-13 21:25:40 28 0
2 条回答
写回答
取消 提交回答
  • Runtime filter是一种查询优化技术,它是在查询执行期间动态生成的过滤器。在查询执行过程中,Runtime filter可以根据已经扫描到的数据值或者其他信息,过滤掉不需要的数据,从而减少查询的数据量,提高查询性能。常见的Runtime filter有Bloom Filter和Min-Max Filter等。它们可以用于多种查询场景,如join、group by、order by等。

    untime filter可用于Hash Join的加速。以SQLSELECT * FROM sales JOIN items ON sales.item_id = items.id WHERE items.price > 1000为例,sales表是事实表,items是维度表,维度表较小,通过条件price>1000可以进一步减少返回的记录数。在执行join时,可以依据满足条件的item_id结果集建立filter,例如满足条件的min,max分别是1,100,可以生成id > 1 and id < 100的过滤表达式,也可以生成ID的in(id1,id2,id3 ...)表达式。Runtime filter传递给左表,左表在扫描记录进行probe时,可以通过filter提前过滤不满足条件的记录,减少probe的次数。对于字符串类型,还可以为右表结果集建立Bloom filter来做提前过滤,当然本身Bloom filter也有代价,不太适合结果集比较大的场景。更进一步,如果左表列上有粗糙索引,可以依据filter来做过滤,减少数据块扫描。在MPP场景,Runtime filter也能发挥作用,可以有效减少shuffle的数据量。
    image.png

    ——参考链接

    2024-08-14 08:09:50
    赞同 展开评论 打赏
  • Runtime Filter的目的是在Join计算前筛选掉一部分数据,以减少Join计算的数据量。在ADB PG中,Runtime Filter被设计用来从Join根源上减少网络Shuffle开销,提升Join性能。
    image.png

    2024-08-14 08:00:36
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
消电行业数据中台解决方案白皮书 立即下载
(终极版)2020阿里云金融数据中台报告 立即下载
2020年中国乳制品行业数据中台研究报告 立即下载