---
title: ClickHouse 表引擎与排序键分区优化实战
keywords:
- ClickHouse
- MergeTree
- 排序键
- 分区
- 聚合
description: 基于 MergeTree 的分区与排序键设计,提供建表与查询优化示例以提升读写与聚合性能。
tags:
- ClickHouse
- MergeTree
- 分区
- 性能优化
- 排序键
- 数据库
- 聚合
categories:
- 文章资讯
- 编程技术
---
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平衡扫描与索引体积
总结
通过时间分区与合适的排序键,可显著提升过滤与聚合效率。

发表评论 取消回复