ClickHouse 性能优化(MergeTree、分区与索引、TTL 与聚合)
关键实践与参数
- 分区键:按时间或业务维度分区,提升裁剪与维护效率。
- 主键与排序键:决定数据组织与跳过索引;提高范围查询性能。
- 索引:
data skipping indices(minmax、set、bloom)减少扫描。 - TTL:对历史数据自动归档或删除,控制存储成本。
示例
CREATE TABLE events (
ts DateTime,
user_id UInt64,
action String
) ENGINE = MergeTree
PARTITION BY toYYYYMM(ts)
ORDER BY (ts, user_id)
SETTINGS index_granularity = 8192;
验证方法
EXPLAIN与system.query_log观察读取行数与裁剪效果。- 比较启用跳过索引前后耗时与扫描比例。
- TTL 生效与分区数据归档比例统计。
注意事项
- 过细分区导致元数据膨胀;控制粒度并合并。
- 跳过索引并非总是收益;按数据分布选择类型。
- 写入批量与压缩策略影响吞吐与查询表现。

发表评论 取消回复