ClickHouse

数据库

查询实时分析数据、管理表并调优 ClickHouse 性能——Neotask 使用 OpenClaw 让其对话化。

你能做什么

运行实时分析查询

描述您的分析问题 - “显示过去 7 天按广告活动的点击率,按小时划分” - 并且 Neotask 使用正确的聚合函数和日期舍入表达式编写针对柱状执行进行优化的 ClickHouse SQL。

诊断合并和部分健康状况

要求 Neotask 检查 system.parts 表中是否有太多部分的表、识别正在进行的合并或查找具有意外行数的分区。它解释 ClickHouse 的合并积压并告诉您是否需要手动 OPTIMIZE。

监控复制和分布式查询

对于 ReplicatedMergeTree 和分布式表,询问复制延迟、队列深度以及是否有任何副本落后。 Neotask 查询 system.replication_queue 和 system.replicas 并用简单的英语解释这些数字的含义。

管理表结构和 TTL

使用正确的 ORDER BY、PARTITION BY 和 TTL 表达式创建 MergeTree 系列表 — 用简单的英语描述,生成为正确的 ClickHouse DDL。添加或修改数据自动过期的 TTL 规则,无需手动编写 ALTER TABLE 语法。

调整查询性能

粘贴慢速 ClickHouse 查询并要求 Neotask 解释查询日志输出,确定主键是否得到有效使用,并建议投影或物化视图是否有助于您的访问模式。

尝试询问

  • “显示事件表中过去 24 小时内每小时的页面浏览量”
  • “哪些表有超过 1000 个零件并且可能需要优化?”
  • “我的复制品现在落后多少?”
  • “创建一个 ReplicatedMergeTree 表来存储按月分区的用户事件”
  • “为什么这个查询不使用主键?” (粘贴您的查询)
  • “向日志表添加 TTL 以删除超过 90 天的行”
  • “使用 system.query_log 显示过去一小时内最慢的 10 个查询”
  • “创建一个物化视图,从原始事件表中预先聚合每小时总计”
  • 专业提示

  • 为最常用的查询过滤器设计 ORDER BY(主键)——要求 Neotask 检查您的查询模式并在创建表之前推荐最佳键。
  • 对少于 10,000 个不同值的字符串列使用 LowCardinality() — 当 Neotask 在架构描述中看到字符串列时,它会自动建议这一点。
  • 与手动日期算术相比,更喜欢使用 toStartOfHour() 和 toStartOfDay() 进行时间分桶 — 要求 Neotask 使用这些函数来更好地进行分区修剪。
  • 插入数据时,每次插入至少批量插入几千行 — 如果您发现零件计数过多,请 Neotask 检查您的插入模式。
  • ClickHouse 中的物化视图在插入时触发,而不是在读取时触发 - 在创建一个之前,请询问 Neotask 确认您的聚合逻辑能够正确处理增量更新。
  • Works Well With