SuperAPI AI 工具集

clickhouse-schema-design

设计与创作

查看项目

更新于 10-16 02:35

技能介绍

用途:创建或修改 ClickHouse 表时加载,指导模式设计,追求十亿行表亚秒级查询、较原始数据 10x 以上压缩、近乎零维护的保留与分层存储,以及只扫描不到 1% 数据的查询。

主要能力:

  1. 排序键与主键。ORDER BY 决定查询性能,最常过滤列放前,低基数列先于高基数列;主键可为 ORDER BY 前缀以缩小索引。典型 3-5 列。
  2. 分区。PARTITION BY 用于数据管理而非查询加速;常见 toYYYYMM(event_date) 月度、toDate 日度(月量超 1TB)、多租户 (tenant_id, toYYYYMM(...)),小表可省略。目标分区大小:一般 MergeTree 1-300 GB,Summing/Replacing 400 MB-40 GB。避免按高基数或过细粒度分区。
  3. 数据类型。用最小可用类型(UInt32 而非 UInt64);唯一值 <10K 的字符串用 LowCardinality;避免 Nullable,改用 DEFAULT;日期时间按需选 Date、DateTime、DateTime64(3);代码中提供了完整建表示例。
  4. TTL。可删除旧数据、分层存储(hot/warm 卷)及列级 TTL(如 PII 30 天后删除)。
  5. 引擎选择。MergeTree 追加型事件日志;ReplacingMergeTree 去重与 upsert,配合 argMax;SummingMergeTree 预聚合计数;AggregatingMergeTree 复杂聚合,配合 -State/-Merge;CollapsingMergeTree 用 +1/-1 取消更新。
  6. 排错。包含过多 parts、压缩比低于 3x、模式良好仍慢查询的诊断 SQL 与修复建议,并列出反模式对照表。

使用方式:本技能为规则与示例集合,无安装命令,代码片段按原样保留。涉及 ALTER TABLE 或重建表前须先向用户确认。

适用场景:ClickHouse 表结构设计评审、查询变慢、压缩率低、分区与 TTL 配置、引擎选型。

限制:不支持参数、价格、平台或效果承诺;示例以英文注释呈现,实际使用需结合具体业务基数与数据量判断。