聊聊OceanBase的向量化过滤

简介: 聊聊OceanBase的向量化过滤

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

指令说明:_mm256_set1_epi16:将一个162字节的整型广播成一个向量。向量大小256位也就是162字节的整数并行。_mm256_loadu_si256:从内存中加载256位整型数据,无需对齐。_mm256_cmp_epi16_mask:比较2个值,比较操作符由第3个入参指定。返回值结果类型为__mmask162个字节16位。每一位表示比较结果值。过程说明:列值通过_mm256_loadu_si256加载,比较值通过_mm256_set1_epi16广播成一个向量。通过_mm256_cm聊聊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 数据排列。

参考

https://zhuanlan.zhihu.com/p/544575114

https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.htmlp_epi16_mask对上面2个值进行比较。一次比较16个值。结果值16位,每一位表示比较结果。也就是OceanBase 采用 bitmap 方案描述数据过滤,即每个算子都有一个 Bitmapfilter 过滤掉的数据,通过 bitmap 标识删除。当数据的选择率很低时,可能会出现 bitmap 标识的数据过于稀疏,性能不佳的情况。一些数据库通过增加整理方法,使数据稠密排列来避免上述情况。但OceanBaseHTAP 场景下 SQL 执行往往会出现阻塞算子(Sort, Hash Join, Hash Group by)或 Transmit 跨机执行算子,而这些算子本身具备数据整理让稠密输出的特点, 额外的数据整理反而会出现不必要的开销。因此 OceanBase 向量化引擎没有提供单独的方法改变 bitmap 数据排列。


参考


https://zhuanlan.zhihu.com/p/544575114https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html

目录
相关文章
|
7月前
|
关系型数据库 MySQL 数据库
实时计算 Flink版产品使用合集之支持将数据写入 OceanBase 数据库吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
151 5
|
4月前
|
存储 SQL 分布式数据库
OceanBase 入门:分布式数据库的基础概念
【8月更文第31天】在当今的大数据时代,随着业务规模的不断扩大,传统的单机数据库已经难以满足高并发、大数据量的应用需求。分布式数据库应运而生,成为解决这一问题的有效方案之一。本文将介绍一款由阿里巴巴集团自主研发的分布式数据库——OceanBase,并通过一些基础概念和实际代码示例来帮助读者理解其工作原理。
341 0
|
2月前
|
SQL 存储 人工智能
OceanBase CTO杨传辉谈AI时代下数据库技术的创新演进路径!
在「DATA+AI」见解论坛上,OceanBase CTO杨传辉先生分享了AI与数据库技术融合的最新进展。他探讨了AI如何助力数据库技术演进,并介绍了OceanBase一体化数据库的创新。OceanBase通过单机分布式一体化架构,实现了从小规模到大规模的无缝扩展,具备高可用性和高效的数据处理能力。此外,OceanBase还实现了交易处理、分析和AI的一体化,大幅提升了系统的灵活性和性能。杨传辉强调,OceanBase的目标是成为一套能满足80%工作负载需求的系统,推动AI技术在各行各业的广泛应用。关注我们,深入了解AI与大数据的未来!
|
4月前
|
Oracle 架构师 分布式数据库
OceanBase数据库的发展历程是什么?
【8月更文挑战第11天】OceanBase数据库的发展历程是什么?
183 63
|
4月前
|
Oracle 关系型数据库 MySQL
OceanBase数据库简介
【8月更文挑战第9天】OceanBase数据库简介
390 60
|
4月前
|
Oracle 关系型数据库 MySQL
OceanBase 与传统数据库的对比
【8月更文第31天】随着云计算和大数据技术的发展,分布式数据库因其高扩展性、高可用性和高性能而逐渐成为企业和开发者关注的焦点。在众多分布式数据库解决方案中,OceanBase作为一个由阿里巴巴集团自主研发的分布式数据库系统,以其独特的架构设计和卓越的性能表现脱颖而出。本文将深入探讨OceanBase与其他常见关系型数据库管理系统(如MySQL、Oracle)之间的关键差异,并通过具体的代码示例来展示这些差异。
303 1
|
4月前
|
关系型数据库 OLAP 分布式数据库
揭秘Polardb与OceanBase:从OLTP到OLAP,你的业务选对数据库了吗?热点技术对比,激发你的选择好奇心!
【8月更文挑战第22天】在数据库领域,阿里巴巴的Polardb与OceanBase各具特色。Polardb采用共享存储架构,分离计算与存储,适配高并发OLTP场景,如电商交易;OceanBase利用灵活的分布式架构,优化数据分布与处理,擅长OLAP分析及大规模数据管理。选择时需考量业务特性——Polardb适合事务密集型应用,而OceanBase则为数据分析提供强大支持。
1110 2
|
4月前
|
存储 SQL 数据库
OceanBase数据库的分区策略
【8月更文挑战第13天】OceanBase数据库的分区策略
221 5
|
4月前
|
SQL 存储 数据库
OceanBase数据库优化
【8月更文挑战第14天】OceanBase数据库优化
143 2
|
4月前
|
存储 SQL 算法
【OceanBase】惊天大反转!启动时真的会占用95%磁盘空间?别怕!揭秘真相+实用调整技巧,手把手教你如何优雅地管理磁盘空间,让你的数据库从此告别“吃土”模式!
【8月更文挑战第15天】OceanBase是一款高性能分布式数据库,启动时并不会默认占用95%磁盘空间,这是一种误解。其设计注重资源管理,可根据业务需求动态调整空间使用。通过设置`max_disk_usage`等参数、优化表设计、定期清理数据及启用压缩等功能,可有效控制磁盘占用,确保高效利用存储资源。
93 1

热门文章

最新文章