1. ClickHouse 列存(Column-Oriented)原理,每列独立文件存储,查询仅读取所需列,配合 LZ4/ZSTD 压缩与 SIMD 向量化执行实现高吞吐分析?
请说明 ClickHouse 列存原理,包括每列独立文件存储、查询只读所需列,以及 LZ4/ZSTD 压缩与 SIMD 向量化执行如何实现高吞吐分析?
- 列存:每列独立文件存储
- 查询只读取所需列(列裁剪)
- 压缩(LZ4/ZSTD)与向量化执行
ClickHouse 采用列式存储,数据按列独立文件存储,每列的数据在磁盘上连续存放。查询时只读取查询涉及的列(列裁剪),避免读无关列,大幅减少 IO。列数据连续性好,天然适合压缩:LZ4 压缩快、ZSTD 压缩率高,配合列内数据相似性获得高压缩比。同时列式数据适合 SIMD 向量化执行,一次处理一批数据,减少指令开销,实现高吞吐分析。
列存的核心优势是「只读需要的列 + 高压缩 + 向量化」。分析查询通常只访问少量列、扫描大量行,列存能把 IO 与技术开销降到最低。压缩比列存高,因为同列数据类型相同、值相近。向量化逐批处理列数据,利用现代 CPU。三者叠加使 ClickHouse 在分析场景吞吐远超行存。