返回顶部
C

ClickHouseClickHouse管理

Query, optimize, and administer ClickHouse OLAP databases with schema design, performance tuning, and data ingestion patterns.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.1
安全检测
已通过
532
下载量
免费
免费
1
收藏
概述
安装方式
版本历史

ClickHouse

ClickHouse 🏠

对数十亿行数据进行实时分析。亚秒级查询。无需索引。

设置

首次使用时,请阅读 setup.md 了解连接配置。

使用场景

用户需要OLAP分析、日志分析、时序数据或实时仪表盘。智能体负责处理模式设计、查询优化、数据摄入和集群管理。

架构

内存文件位于 ~/clickhouse/。结构请参考 memory-template.md。

~/clickhouse/
├── memory.md # 连接配置 + 查询模式
├── schemas/ # 各数据库的表定义
└── queries/ # 保存的分析查询

快速参考

主题文件
设置与连接setup.md
内存模板
memory-template.md | | 查询模式 | queries.md | | 性能调优 | performance.md | | 数据摄入 | ingestion.md |

核心规则

1. 始终指定引擎

每个表都需要显式指定引擎。默认使用MergeTree系列:

sql
-- 时序数据/日志
CREATE TABLE events (
timestamp DateTime,
event_type String,
data String
) ENGINE = MergeTree()
ORDER BY (timestamp, event_type);

-- 聚合指标
CREATE TABLE daily_stats (
date Date,
metric String,
value AggregateFunction(sum, UInt64)
) ENGINE = AggregatingMergeTree()
ORDER BY (date, metric);

2. ORDER BY 就是你的索引

ClickHouse没有传统索引。ORDER BY 子句决定了数据布局:
  • - 将高基数的过滤列放在前面
  • 将范围列(日期、时间戳)放在前面
  • 匹配最常见的WHERE模式

sql
-- 好:先按user_id过滤,再按日期范围
ORDER BY (userid, date, eventtype)

-- 差:按user_id过滤时却把date放在前面
ORDER BY (date, userid, eventtype)

3. 使用合适的数据类型

使用场景类型原因
时间戳DateTime 或 DateTime64原生时间函数
低基数字符串
LowCardinality(String) | 10倍压缩 | | 少量枚举值 | Enum8 或 Enum16 | 最小存储空间 | | 仅在需要时使用Nullable | Nullable(T) | 增加开销 | | IP地址 | IPv4 或 IPv6 | 4字节 vs 16+字节 |

4. 批量插入

永远不要逐行插入。ClickHouse针对批量写入进行了优化:

bash

好:批量插入


clickhouse-client --query=INSERT INTO events FORMAT JSONEachRow < batch.json

差:循环逐行插入

for row in data: INSERT INTO events VALUES (...)

最小批次:1,000行。最佳批次:10,000-100,000行。

5. 使用FINAL预热查询

对ReplacingMergeTree/CollapsingMergeTree的查询需要使用 FINAL 确保准确性:

sql
-- 可能返回重复/旧版本
SELECT * FROM users WHERE id = 123;

-- 保证返回最新版本
SELECT * FROM users FINAL WHERE id = 123;

FINAL 有性能开销。对于仪表盘,考虑使用物化视图。

6. 使用物化视图提升速度

预聚合昂贵的计算:

sql
CREATE MATERIALIZED VIEW hourly_events
ENGINE = SummingMergeTree()
ORDER BY (hour, event_type)
AS SELECT
toStartOfHour(timestamp) AS hour,
event_type,
count() AS events
FROM events
GROUP BY hour, event_type;

7. 优先检查系统表

在调试之前,先检查系统表:

sql
-- 正在运行的查询
SELECT * FROM system.processes;

-- 最近的查询性能
SELECT query, elapsed, readrows, memoryusage
FROM system.query_log
WHERE type = QueryFinish
ORDER BY event_time DESC
LIMIT 10;

-- 表大小
SELECT database, table, formatReadableSize(total_bytes) as size
FROM system.tables
ORDER BY total_bytes DESC;

常见陷阱

  • - 使用String而非LowCardinality → 状态/类型列存储空间增大10倍
  • 错误的ORDER BY → 全表扫描而非索引查找
  • 逐行插入 → 大量分区碎片,写入缓慢
  • 缺少TTL → 表无限增长,磁盘满
  • SELECT * → 读取所有列,丧失列式优势
  • 到处使用Nullable → 开销 + NULL处理复杂性
  • 忘记FINAL → 合并表中出现过期/重复数据

性能检查清单

在执行昂贵查询之前:

  1. 1. 检查EXPLAIN:EXPLAIN SELECT ... 显示执行计划
  2. 先采样:SELECT ... FROM table SAMPLE 0.01 获取1%样本
  3. 限制列数:只SELECT需要的列
  4. 使用PREWHERE:在读取所有列之前进行过滤
  5. 检查分区:SELECT count() FROM system.parts WHERE table=X

sql
-- PREWHERE优化
SELECT userid, eventtype, data
FROM events
PREWHERE date = today()
WHERE event_type = click;

集群管理

添加TTL进行数据保留

sql
-- 删除旧数据
ALTER TABLE events
MODIFY TTL timestamp + INTERVAL 90 DAY;

-- 移动到冷存储
ALTER TABLE events
MODIFY TTL timestamp + INTERVAL 30 DAY TO VOLUME cold;

监控磁盘使用

sql
SELECT
database,
table,
formatReadableSize(sum(bytesondisk)) as disk_size,
sum(rows) as total_rows,
count() as parts
FROM system.parts
WHERE active
GROUP BY database, table
ORDER BY sum(bytesondisk) DESC;

外部端点

端点发送数据用途
localhost:8123SQL查询HTTP接口
localhost:9000
SQL查询 | 原生TCP接口 |

不联系任何外部服务。所有查询都在用户指定的ClickHouse实例上运行。

安全与隐私

本地保存的数据(经用户同意):

  • - 连接配置(主机、端口、数据库)保存在 ~/clickhouse/memory.md
  • 查询模式和模式文档
  • 认证方式偏好(密码 vs 证书)

重要提示: 如果您提供数据库密码,它们将以明文形式存储在 ~/clickhouse/ 中。建议使用环境变量或由clickhouse-client管理的连接配置。

此技能不会:

  • - 在没有用户明确配置的情况下连接到任何ClickHouse
  • 将数据发送到外部服务
  • 未经询问自动收集或存储凭据

相关技能

如果用户确认,使用 clawhub install 安装:
  • - sql — SQL查询模式
  • analytics — 数据分析工作流
  • data-analysis — 结构化数据探索

反馈

  • - 如果觉得有用:clawhub star clickhouse
  • 保持更新:clawhub sync

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 clickhouse-1775973973 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 clickhouse-1775973973 技能

通过命令行安装

skillhub install clickhouse-1775973973

下载

⬇ 下载 ClickHouse v1.0.1(免费)

文件大小: 12.01 KB | 发布时间: 2026-4-13 09:46

v1.0.1 最新 2026-4-13 09:46
Initial release

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部