加载中...

向量化执行(Vectorized Execution)是一种查询执行模型:算子之间每次传递一批(如 1024 行)按列组织的数据(向量),而非火山模型中的单行,处理逻辑在紧凑循环中对整批数据运算。
批量列式处理带来多重收益:摊薄了函数调用与调度开销;同列数据在内存中连续,提高 CPU 缓存命中率;简单紧凑的循环便于编译器自动向量化,利用 SIMD 指令一次处理多个数据;分支预测也更友好。该思想由 MonetDB/X100(后发展为 VectorWise)论文系统提出。
向量化已成为分析型(OLAP)引擎的标配:ClickHouse、DuckDB、Apache Doris、StarRocks、Snowflake 等均采用;Spark 通过 Tungsten 与向量化读取优化性能;Meta 开源的 Velox 则提供通用向量化执行库。
另一条提升 CPU 效率的路线是 JIT 查询编译(如 HyPer)。向量化实现较简单、对表达式复杂的负载稳健;编译执行对逐行流水线更优。两者可以混合,现代引擎常按算子特点分别选用。

登录 后参与讨论
暂无讨论,来发表第一条评论吧