数据仓库与 OLAPVectorized Execution
向量化执行 是什么?
一次处理一批(如 8192 行)而不是一行,充分利用 CPU 缓存
类比:流水线批量打包,比一件件手拿快得多
为什么快
逐行处理时,每行都要做函数调用、类型判断、虚函数分发,CPU 大部分时间花在“调度”上而不是计算上。向量化把 8192 行凑成一批,用连续内存 + SIMD 指令一次算完,分支预测也友好。
配合列存,同一列的数据在内存里是连续的,CPU 缓存命中率极高。
代价
向量化对短查询不友好:数据量小的时候,批处理的开销反而更明显。所以 ClickHouse 在点查(按主键取一行)上不如 MySQL,它的优势在“扫描大量数据做聚合”。
和 MPP 的关系
两者是不同维度的优化:MPP 是“多台机器并行”,向量化是“单核内并行”。Doris、StarRocks、ClickHouse 都是两者结合——节点间并行 + 节点内向量化。