前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >聊聊OceanBase的向量化过滤

聊聊OceanBase的向量化过滤

作者头像
yzsDBA
发布2023-05-25 09:52:05
3480
发布2023-05-25 09:52:05
举报

聊聊OceanBase的向量化过滤

为帮助客户解决 HTAP 混合负载下数据查询效率难的问题,OceanBase 引入向量化技术,并完全自主设计了向量化查询引擎,极大地提高了 CPU 单核处理性能,号称实现了 HTAP 场景下复杂分析查询性能的 10 倍提升。我们来看下它是怎么实现过滤的。以2个字节的整型值比较为例:

指令说明:

_mm256_set1_epi16:将一个16位2字节的整型广播成一个向量。向量大小256位也就是16个2字节的整数并行。

_mm256_loadu_si256:从内存中加载256位整型数据,无需对齐。

_mm256_cmp_epi16_mask:比较2个值,比较操作符由第3个入参指定。返回值结果类型为__mmask16即2个字节16位。每一位表示比较结果值。

过程说明:

列值通过_mm256_loadu_si256加载,比较值通过_mm256_set1_epi16广播成一个向量。通过_mm256_cmp_epi16_mask对上面2个值进行比较。一次比较16个值。结果值16位,每一位表示比较结果。

也就是OceanBase 采用 bitmap 方案描述数据过滤,即每个算子都有一个 Bitmap,filter 过滤掉的数据,通过 bitmap 标识删除。当数据的选择率很低时,可能会出现 bitmap 标识的数据过于稀疏,性能不佳的情况。一些数据库通过增加整理方法,使数据稠密排列来避免上述情况。但OceanBase的HTAP 场景下 SQL 执行往往会出现阻塞算子(Sort, Hash Join, Hash Group by)或 Transmit 跨机执行算子,而这些算子本身具备数据整理让稠密输出的特点, 额外的数据整理反而会出现不必要的开销。因此 OceanBase 向量化引擎没有提供单独的方法改变 bitmap 数据排列。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-05-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 yanzongshuaiDBA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档