过去一年,大数据分析引擎的性能竞赛出现了一个共同的答案:向量化执行。从 Meta 开源的 Velox、Apache 社区的 DataFusion,到商业产品里的 Spark Photon、StarRocks、ClickHouse,新一代查询引擎几乎都把“按批处理、按列计算、贴近 CPU 指令”写进了基本设计。对数据团队而言,这轮变化不只是跑分更好看,而是直接关系到报表延迟、集群规模和成本账单。

为什么是向量化

传统执行引擎多采用火山模型,算子之间通过逐行调用 next() 传递数据。这种方式逻辑清晰,但每处理一行就有一次函数调用,分支预测失败率高,CPU 缓存也难以命中。向量化执行换了个思路:数据先按列组织成批次,一次处理几百到几千行,配合 SIMD 指令在一个时钟周期内完成多个值的计算,同时把解释执行的开销摊薄到整批数据上。在扫描、过滤、聚合这类典型分析场景中,性能提升通常在三到十倍,列存格式的压缩优势也能同步释放。

生态动向:执行层开始模块化

更值得关注的是,执行引擎正从“每个系统自己写一遍”走向可复用组件。Velox 把 C++ 编写的向量化算子和类型系统抽成库,让不同引擎共享同一套执行底座;Apache Arrow 统一了内存中的列式表示,减少跨语言、跨进程的数据拷贝;DataFusion 用 Rust 重写了从解析到执行的完整链路,便于嵌入到新系统中。国内多家厂商的分析型数据库与湖仓引擎,也在这一层做替换或自研,兼容 Arrow 内存格式逐渐成为默认选项。执行层的模块化,正在让“换个引擎”这件事变得比过去轻得多。

企业落地要过的几道坎

小结

向量化执行不是一项孤立的技术,而是列式存储、内存格式标准化、编译器优化与硬件演进共同作用的结果。它让原本需要靠堆机器换来的分析速度,变成可以通过引擎升级获得的收益。对正在评估大数据平台的团队来说,把执行引擎的向量化程度、Arrow 兼容性和算子覆盖度纳入考核清单,可能比单纯比较吞吐数字更有参考价值。