ClickHouse 表引擎与排序键分区优化实战

建表示例


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;

查询优化


SELECT count() FROM events
WHERE ts >= now() - INTERVAL 7 DAY AND action = 'login';

SELECT user_id, count() FROM events
WHERE ts >= now() - INTERVAL 1 DAY
GROUP BY user_id
ORDER BY count() DESC
LIMIT 20;

维护

  • 根据时间维度滚动分区,便于归档与清理
  • 合理设置 index_granularity 平衡扫描与索引体积

总结

通过时间分区与合适的排序键,可显著提升过滤与聚合效率。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部