SQL Sever Pragmatic Bitmap过滤技术解析

SQL Sever Pragmatic Bitmap过滤技术解析

1、运行时过滤技术

运行时过滤技术是OLAP数据库在join时常用的一项优化技术,通常使用内表也就是构建Hash表时将内表的连接键值构建一个BitMap(布隆过滤器),然后将该BitMap推送到探测端,下沉到外表侧的扫描节点;外表扫描后,将其连接键值利用BitMap进行过滤,提前过滤掉不满足join条件的记录,减少探测次数。

分布式数据库中,常见的做法如下:

1)本地join,无数据shuffle

Hash算子构建的BitMap顺着父节点直接传送给探测端的扫描算子

2)探测端有shuffle,但是shuffle下是Scan算子

探测端shuffle算子下是简单的Scan算子,顺着执行计划树也可以将BitMap传递给Scan算子。

3)探测端有shuffle,但是shuffle下是复杂算子

此时shuffle下是一个复杂算子子树,无法下沉到指定的Scan算子上,所以这里可以将BitMap传递给shuffle算子的发送端,让其在发送数据前先通过BitMap进行过滤,提前过滤掉不满足join条件的数据,减少数据传输量和探测次数。

运行时过滤的该Hash的Bitmap仅能应用到一个Join的过滤中,在级联Join时,无法应用到其他join中进行过滤。针对此场景,SQL Server实现了Pragmatic Bitmap Filters,并在2026年的CIDR会议上以论文形式发表了其创新性做法。CIDR是和VLDB、SIGMOD、ICDE三大国际顶级数据库会议同级别的数据库会议,关注数据库创新性。

2、SQL Sever的做法

SQL Server不关注分布式场景,仅关注级联join场景。

1)对于A join (B join C)的级联join,假设三表之间都有连接键关联,那么A表构建Hash的同时构建好A的Bitmap A,然后顺着执行计划树向探测端下推;

2)只要检测到Bitmap A的列有关联关系就可以下推;

3)A和B和C三者都有关联关系,所以Bitmap A可以下推到Scan B上,提前过滤掉不满足条件的值后再构建Hash表,减少Hash表大小。与此同时构建好Bitmap B;

4)Bitmap A 也可以下推到Scan C

5)Bitmap B也下推到Scan C

6)Bitmap A和B的交集作为过滤Bitmap应用到Scan C上,提前过滤掉不满足join条件的值

这样,在级联join中,可以通过Bitmap尽可能下推,当然如果级联join中,另外两个表没有join关联关系的话,该bitmap就没有用了,也就不可以下推了:

论文中显示,TPCH中可提升1-3倍以上的性能提升,效果还是杠杠的:

3、论文

2026 CIDR会议:I Can't Believe It's Not Yannakakis: Pragmatic Bitmap Filters in Microsoft SQL Server

相关推荐
jyOverQ3 分钟前
MySQL 索引为什么能加快查询?B+Tree 到底是什么?
数据库·mysql
天天进步201517 分钟前
Pixelle-Video 源码解析 #17:TTS 语音生成:Edge-TTS、Index-TTS 如何接入?
前端·数据库
鸽芷咕18 分钟前
异构数据同步,凭什么敢说数据不丢?——拆解金仓KFS的全周期一致性校验
数据库
海浪仙人掌19 分钟前
账龄分析的定义是什么?账龄分析有什么作用?
数据库
ACP广源盛1392462567320 分钟前
M6/M5 Pro Mac mini 端侧 AI 落地@ACP#IX6024 PCIe2.0 交换芯片在轻量化 AI 服务中的机会与应用场景
大数据·数据库·人工智能·嵌入式硬件·macos·开源
ly768927 分钟前
深入解析 MySQL 间隙锁:从加锁规则到死锁案例
数据库·mysql·死锁·间隙锁·next-key lock·事务隔离
LRL_27 分钟前
7x24小时不停机:基于 Apache SeaTunnel 实现 Oracle to Oracle 实时 CDC 同步全实战
数据库·oracle·apache
不剪发的Tony老师28 分钟前
Navop:一款工具搞定数据库、SSH、SFTP、远程桌面、AI Agent
运维·数据库·ssh
程序员-Benothing34 分钟前
MySQL 中 DELETE、DROP 和 TRUNCATE 的区别是什么?
数据库·mysql
lhldsg39 分钟前
幼儿托管系统开发实战指南:从需求分析到架构设计全流程解析
数据库·数据仓库·需求分析