SuperAPI AI 工具集

clickhouse-query-optimization

设计与创作

查看项目

更新于 10-15 20:34

技能介绍

用途:优化 ClickHouse 查询速度与效率,覆盖表结构设计、索引选择、分区策略、投影以及查询写法调优。

主要能力:

  1. 主键设计:主键定义排序而非唯一性,按低基数到高基数排列列,查询需过滤主键前缀才能命中索引。
  2. 数据跳过索引:为非主键列添加 minmax(数值范围)、set(低基数分类)、bloom_filter(字符串等值)、ngrambf_v1(子串搜索)等索引。
  3. 分区:按 toYYYYMM(timestamp) 等分区,便于用 DROP PARTITION 快速删除旧数据,或用 TTL 自动过期。
  4. 投影:为不同访问模式建立不同排序的投影,并用 MATERIALIZE PROJECTION 物化。
  5. 查询优化:用 PREWHERE 提前过滤小列,使用 uniq、topK、quantile 等近似函数,只选择需要的列。
  6. 分析与调试:用 EXPLAIN 查看执行计划,查询 system.query_log 获取耗时、读取行数与字节数。

使用方式:先设计表结构,用 EXPLAIN 对比优化前后;监控 query_log,对读取行数过大的查询告警;注意索引越多写入越慢;用 EXPLAIN 确认优化器是否选用投影。

适用场景:写入快、查询慢的 ClickHouse 表;电商、用户事件、时间序列等分析场景;需要保留策略与多访问模式的表。

限制与要求:需 ClickHouse 21.4+,需了解 SQL 与聚合,需掌握实际查询模式;资料未提供具体性能数字之外的收费、平台等信息。