首页/数据/NoSQL 速查/MergeTree 引擎参数与数据组织
ClickHouse56 条

MergeTree 引擎参数与数据组织

MergeTree 按 ORDER BY 排序存储、按 PARTITION BY 分区,插入形成独立 part,后台按规则合并;index_granularity 决定稀疏索引的粒度。

NoSQL 速查数据更新于 2026-10-12
必填ORDER BY:定义排序键与稀疏主索引依据
可选PARTITION BY、PRIMARY KEY(默认取 ORDER BY)、SAMPLE BY、TTL、SETTINGS
数据单位每个 INSERT 生成一个 part,后台 merge 成更大的 part;查询对 part 并行扫描

示例

示例
CREATE TABLE metrics
(
    ts DateTime,
    metric LowCardinality(String),
    value Float64
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(ts)
ORDER BY (metric, ts)
SETTINGS index_granularity = 8192;

SELECT count() FROM system.parts WHERE table = 'metrics' AND active;
PARTITION BY 用于数据生命周期管理(按月/天分区后按分区删除或移动);排序键才决定查询裁剪效率。

易错点

  • 小批量高频 INSERT 会产生大量小 part,后台合并跟不上时查询变慢,导入尽量攒批
  • ORDER BY 列顺序即索引前缀顺序,把低基数或不过滤的列放前面会让裁剪失效

数据来源与参考

  • ClickHouse Docs: MergeTree engine
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌