ClickHouse 架构与原理 专栏导览
专栏定位
本专栏聚焦 ClickHouse 列式存储 OLAP 引擎的架构设计与查询优化——从行存 vs 列存的本质区别和 SIMD 向量化执行,到 MergeTree 引擎家族的稀疏索引与 Part 合并机制,再到分布式表的分片路由和性能调优。ClickHouse 以其极致的查询性能成为实时分析领域的标杆——理解其存储引擎和执行引擎的设计,是进行表结构设计和查询优化的前提。
目标读者
- 使用 ClickHouse 做实时分析、报表查询的数据工程师/后端工程师
- 需要进行 ClickHouse 集群规划和性能调优的 DBA/SRE
- 对列式存储和 OLAP 引擎设计感兴趣的技术爱好者
专栏目录
| 序号 | 标题 | 核心内容 |
|---|---|---|
| 01 | 01 ClickHouse 全局架构——列式存储与 MPP 执行引擎 | 行存 vs 列存的本质区别、SIMD 向量化执行、MPP 架构的并行查询、ClickHouse 在 OLAP 场景中的定位 |
| 02 | 02 MergeTree 引擎家族——主键索引与数据排序 | MergeTree 的稀疏索引(Primary Key Index)、数据按主键排序的物理存储、Mark 文件与 Granule 的定位机制、ReplacingMergeTree/AggregatingMergeTree/CollapsingMergeTree 的变体 |
| 03 | 03 数据写入与 Part 合并 | 写入的 Part 生成流程、后台 Merge 的触发策略与调度、Mutation 操作的异步执行、TTL 数据过期与自动清理 |
| 04 | 04 查询执行引擎——向量化与 Pipeline | 查询解析→优化→执行的完整链路、向量化执行(列批量处理)、Pipeline 执行器的多线程调度、Prewhere 优化 |
| 05 | 05 分布式表与数据分片 | Distributed 表引擎的查询路由、分片键(Sharding Key)设计、副本与 ReplicatedMergeTree 的 Zookeeper 协调、分布式 JOIN 的性能考量 |
| 06 | 06 ClickHouse 性能调优——表设计、查询优化与资源管理 | 主键与排序键设计原则、物化视图预聚合、跳数索引(minmax/set/bloom_filter/ngrambf)、用户级资源配额与并发限制 |
| 07 | 07 ClickHouse 运维——集群部署、监控与版本升级 | 集群部署拓扑(Shard + Replica)、system 表监控(query_log/parts/merges)、配置管理与滚动升级、与 Doris/StarRocks 的选型对比 |
推荐阅读路径
核心原理路径:01 → 02 → 03 → 04
分布式与调优路径:05 → 06 → 07