Install
openclaw skills install clickhouse-best-practicesClickHouse 数据库优化专家技能。MUST USE when reviewing ClickHouse schemas, queries, or configurations. 审查 CREATE TABLE、ALTER TABLE、SELECT、JOIN、聚合查询、写入策略和配置。包含 28 条规则,涵...
openclaw skills install clickhouse-best-practices全面的 ClickHouse 指南,涵盖表结构设计、查询优化和数据写入。包含 3 大类(表结构、查询、写入)共 28 条规则,按影响程度排序。
官方文档: ClickHouse 最佳实践
优先级顺序:
rules/ 目录中是否有适用的规则规则名称..."的格式引用为什么规则优先: ClickHouse 具有特殊的行为特性(列式存储、稀疏索引、合并树机制),在这些场景下,通用的数据库直觉可能会产生误导。
审查表结构、查询或配置时,请按以下格式组织输出:
## 检查的规则
- `规则名称-1` - 符合规范 / 存在问题
## 发现
### 问题项
- **`规则名称`**:问题描述
- 当前状态:[代码当前的做法]
- 应该做到:[正确的做法]
- 修复方案:[具体的修改建议]
### 符合规范项
- `规则名称`:简要说明为什么符合规范
## 建议
[按优先级排列的修改建议,并引用相关规则]
规则文件:
rules/schema-pk-plan-before-creation.mdrules/schema-pk-cardinality-order.mdrules/schema-pk-prioritize-filters.mdrules/schema-types-native-types.mdrules/schema-types-minimize-bitwidth.mdrules/schema-types-lowcardinality.mdrules/schema-types-avoid-nullable.mdrules/schema-partition-low-cardinality.mdrules/schema-partition-lifecycle.md检查清单:
规则文件:
rules/query-join-choose-algorithm.mdrules/query-join-filter-before.mdrules/query-join-use-any.mdrules/query-index-skipping-indices.mdrules/schema-pk-filter-on-orderby.md检查清单:
规则文件:
rules/insert-batch-size.mdrules/insert-mutation-avoid-update.mdrules/insert-mutation-avoid-delete.mdrules/insert-async-small-batches.mdrules/insert-optimize-avoid-final.md检查清单:
| 优先级 | 分类 | 影响程度 | 前缀 | 关注点 | 规则数量 |
|---|---|---|---|---|---|
| 1 | 主键选择 | 关键 | schema-pk- | ORDER BY 列顺序 | 4 |
| 2 | 数据类型选择 | 关键 | schema-types- | 原生类型、LowCardinality | 5 |
| 3 | JOIN 优化 | 关键 | query-join- | 算法选择、过滤优化 | 5 |
| 4 | 批量写入 | 关键 | insert-batch- | 每次 INSERT 10K-100K 行 | 1 |
| 5 | 避免 Mutation | 关键 | insert-mutation- | ReplacingMergeTree 替代 UPDATE | 2 |
| 6 | 分区策略 | 高 | schema-partition- | 低基数、生命周期管理 | 4 |
| 7 | 跳数索引 | 高 | query-index- | bloom_filter、minmax | 1 |
| 8 | 物化视图 | 高 | query-mv- | 增量/可刷新物化视图 | 2 |
| 9 | 异步写入 | 高 | insert-async- | 服务端缓冲 | 2 |
| 10 | 避免 OPTIMIZE | 高 | insert-optimize- | 让后台合并自然进行 | 1 |
| 11 | JSON 使用 | 中等 | schema-json- | 动态 schema | 1 |
schema-pk-plan-before-creation - 建表前规划 ORDER BY(不可更改)schema-pk-cardinality-order - 列按基数从低到高排序schema-pk-prioritize-filters - 包含常用过滤列schema-pk-filter-on-orderby - 查询过滤必须使用 ORDER BY 前缀schema-types-native-types - 使用原生类型,不要全用 Stringschema-types-minimize-bitwidth - 使用能容纳数据的最小数值类型schema-types-lowcardinality - 唯一值 <10K 的字符串用 LowCardinalityschema-types-enum - 有限值集合用 Enum 并启用校验schema-types-avoid-nullable - 避免 Nullable,改用 DEFAULTschema-partition-low-cardinality - 分区数量控制在 100-1,000schema-partition-lifecycle - 分区用于数据生命周期管理,而非查询优化schema-partition-query-tradeoffs - 理解分区裁剪的权衡schema-partition-start-without - 考虑先不分区schema-json-when-to-use - 动态 schema 用 JSON;已知结构用类型化列query-join-choose-algorithm - 根据表大小选择算法query-join-use-any - 只需一条匹配时用 ANY JOINquery-join-filter-before - JOIN 前先过滤query-join-consider-alternatives - 字典/宽表 vs JOINquery-join-null-handling - join_use_nulls=0 使用默认值query-index-skipping-indices - 非 ORDER BY 过滤列使用跳数索引query-mv-incremental - 实时聚合用增量物化视图query-mv-refreshable - 复杂 JOIN 用可刷新物化视图insert-batch-size - 每次 INSERT 10K-100K 行insert-async-small-batches - 高频小批量用异步写入insert-format-native - Native 格式性能最佳insert-mutation-avoid-update - 用 ReplacingMergeTree 替代 ALTER UPDATEinsert-mutation-avoid-delete - 用轻量级 DELETE 或 DROP PARTITIONinsert-optimize-avoid-final - 让后台合并自然进行本技能适用于: