数据仓库与 OLAP合并树表引擎
MergeTree 是什么?
ClickHouse 最核心的表引擎,写入生成 part,后台不断合并
类比:收快递时先堆着,晚上统一按楼栋上架
工作方式
每次批量写入生成一个不可变的 part(按列存的文件 + 索引)。后台线程持续把小的 part 合并成大的,合并过程对查询透明。
这个模型和 LSM 树很像:只追加、不原地改,用后台合并换取写入吞吐。
家族成员
MergeTree 是一族引擎的基类,按“合并时怎么处理重复数据”分。
- MergeTree:原样合并,不去重
- ReplacingMergeTree:相同排序键保留最新一条(最终去重,不保证实时)
- SummingMergeTree / AggregatingMergeTree:合并时直接聚合,适合预聚合指标
- ReplicatedMergeTree:加 ZooKeeper 做副本,生产必选
part 太多会怎样
写入太频繁时 part 堆积,合并跟不上,就会报 `Too many parts`,写入被拒绝。解决思路是客户端攒批(每批 ≥ 1 万行),而不是加大参数硬扛。