向量化执行引擎是一种在现代数据库和分析型系统中用于显著提升查询处理性能的关键技术。它通过改变数据处理的基本单位(从一行到一批行)和利用现代CPU的硬件特性来实现加速。
以下是它的核心概念和原理:
-
传统执行引擎(行式执行):
- 数据库系统通常将数据组织成表,表由行(记录)组成。
- 传统执行引擎(如经典的Volcano迭代器模型)一次处理一行数据。
- 一个查询计划由多个操作符(Operator)组成(例如,扫描Scan、过滤Filter、聚合Aggregation、连接Join)。每个操作符实现一个
next()方法,每次调用返回下一行处理结果。 - 问题: CPU每处理一行数据,都需要调用一次操作符的
next()方法。虽然一行数据很小,但函数调用的开销(压栈、弹栈、跳转)相对于实际的数据操作(如加法、比较)来说非常大,尤其是在处理数百万甚至数十亿行时。这导致了大量的指令开销,CPU大部分时间浪费在处理指令而不是实际运算上。同时,这种逐行处理难以有效利用现代CPU的高级特性(如SIMD)。
-
向量化执行引擎的核心思想:
- 批处理: 不再一次处理一行,而是一次处理一批行(例如1024行、2048行)。这一批行数据称为一个向量或一个批次。
- 列式处理(通常配合使用):
- 与向量化执行高度契合的是列式存储。数据按列而不是按行存储和读取。
- 当引擎处理一个批次时,它实际上是加载和处理每个列的

最低0.47元/天 解锁文章
1550

被折叠的 条评论
为什么被折叠?



