土法炼钢兴趣小组的算法知识备份

【列存引擎内核】监控与系统表

文章导航

分类入口
databaseobservability
标签入口
#clickhouse#system-tables#monitoring#parts#merge#replication#query-log

目录

MergeTree 的健康状况 几乎全在 system 表——不像 PostgreSQL 需凑 pg_stat_* + OS。平台工程师应把 system.partssystem.mergessystem.replicassystem.query_log 纳入基线监控,并与 可观测性系列 的 metrics/logs 栈对接:Pull SQL → Prometheus clickhouse_exporter 或定制 cron。

本文说明 字段含义、组合查询、告警阈值思路——不编造具体数字阈值;阈值须按集群规模与 SLA 在本环境标定。

版本锚定:ClickHouse 24.x LTS


一、监控分层

flowchart TB
  subgraph l1 [L1 存活]
    UP[HTTP /ping]
    ZK[Keeper 连通]
  end
  subgraph l2 [L2 存储健康]
    P[parts 数量]
    M[merge 队列]
    R[replica lag]
  end
  subgraph l3 [L3 查询]
    Q[query_log 延迟]
    MEM[memory tracking]
  end
  subgraph l4 [L4 业务]
    SLA[dashboard p95]
  end
  l1 --> l2 --> l3 --> l4
层级 目标 主要数据源
L1 进程与协调 system.metrics, Keeper
L2 Part/Merge/副本 parts, merges, replicas
L3 查询与资源 query_log, events, asynchronous_metrics
L4 业务 SLA 应用 + CH 聚合

二、system.parts

Part 是 MergeTree 数据单元(第 02 篇)。

2.1 核心字段

字段 含义
database, table 逻辑表
partition 分区键字符串
name Part 目录名
active 是否参与查询(merge 后旧 part 为 0)
rows, bytes_on_disk 规模
level merge 深度(越大 part 越大)
modification_time 最后修改
min_date, max_date 分区列范围(视表定义)

2.2 常用查询

-- 每表 active part 数(too many parts 前兆)
SELECT database, table, count() AS parts, sum(rows) AS rows, sum(bytes_on_disk) AS bytes
FROM system.parts
WHERE active
GROUP BY database, table
ORDER BY parts DESC;

-- 分区级 part 数
SELECT database, table, partition, count() AS parts
FROM system.parts
WHERE active
GROUP BY database, table, partition
HAVING parts > 50
ORDER BY parts DESC;

告警思路:单表 active parts 持续增长且不回落 → merge 跟不上(第 15 篇)。阈值取决于 parts_to_throw_insert 配置(第 16 篇)。

2.3 Wide vs Compact

part_type 字段(版本相关)——Wide 每列独立文件;监控磁盘时 bytes_on_disk 已含全部。


三、system.merges

后台 merge 任务实时视图。

字段 含义
database, table 目标表
elapsed 已运行秒
progress 0~1 进度(若可用)
num_parts 合并 part 数
result_part_name 产出 part
total_size_bytes_compressed 输入压缩大小
memory_usage 当前内存
SELECT database, table, elapsed, progress, num_parts, memory_usage
FROM system.merges
ORDER BY elapsed DESC;

告警思路

Merge 机制(第 06 篇) 对照读 merge_algorithm


四、system.replication_queue

ReplicatedMergeTree 待执行 log entry(第 08 篇)。

SELECT database, table, replica_name, position, node_name, type, create_time, num_tries, last_exception
FROM system.replication_queue
ORDER BY create_time
LIMIT 50;
信号 含义
position 持续增大 副本 lag
num_tries 执行失败重试
last_exception 非空 需人工介入
SELECT database, table,
       max(log_max_index - log_pointer) AS lag_approx
FROM system.replicas
GROUP BY database, table;

(字段名以 24.x 为准——log_pointerlog_max_index 等。)


五、system.replicas

副本状态汇总。

字段 含义
is_leader 是否 leader replica
is_readonly 只读(ZK 断等)
absolute_delay 与 leader 延迟秒
queue_size 队列长度
inserts_in_queue 待 insert
merges_in_queue 待 merge
SELECT database, table, replica_name, is_leader, is_readonly, absolute_delay, queue_size
FROM system.replicas
WHERE absolute_delay > 0
ORDER BY absolute_delay DESC;

告警is_readonly=1absolute_delay 超 SLA → 副本故障模式(第 15 篇)。


六、system.query_log

需配置 query_log(通常默认开启)。

SELECT
    type,
    event_time,
    query_duration_ms,
    read_rows,
    read_bytes,
    written_rows,
    memory_usage,
    exception_code,
    query
FROM system.query_log
WHERE event_date = today()
  AND type = 'QueryFinish'
ORDER BY query_duration_ms DESC
LIMIT 20;
字段 用途
read_rows vs result 剪枝效率
ProfileEvents 细粒度 counter(JSON)
used_row_policies 权限
distributed_depth 分布式层数

慢查挖掘:

SELECT normalizeQuery(query) AS q, count(), avg(query_duration_ms), max(read_rows)
FROM system.query_log
WHERE event_date >= today() - 7 AND type = 'QueryFinish' AND query_duration_ms > 1000
GROUP BY q
ORDER BY count() DESC
LIMIT 20;

不粘贴示例输出


七、system.metrics 与 asynchronous_metrics

SELECT metric, value FROM system.metrics WHERE metric LIKE '%Merge%';
SELECT metric, value FROM system.asynchronous_metrics WHERE metric LIKE '%Memory%';

对接 Prometheus:社区 exporter 映射这些指标——版本与 metric 名随 CH 演进,部署时 diff 24.x 文档。


八、system.events

累积 counter,重启清零。

SELECT event, value FROM system.events
WHERE event IN ('InsertedRows', 'MergedRows', 'OSIOWaitMicroseconds')
ORDER BY value DESC
LIMIT 30;

计算 ingest 速率:两次采样 InsertedRows 差 / Δt。


九、system.mutations

SELECT database, table, mutation_id, command, create_time, parts_to_do, is_done, latest_failed_part
FROM system.mutations
WHERE NOT is_done
ORDER BY create_time;

parts_to_do 长期不降 → mutation 堆积(第 15 篇)。


十、system.detached_parts

异常 part 被 detach 后躺在此——磁盘泄漏与复制异常信号。

SELECT database, table, name, reason, bytes_on_disk
FROM system.detached_parts;

十一、内存 tracking

Settings:

SELECT formatReadableSize(value) FROM system.settings WHERE name = 'max_server_memory_usage';

system.processes 看当前查询内存:

SELECT query_id, user, elapsed, formatReadableSize(memory_usage) AS mem, query
FROM system.processes
ORDER BY memory_usage DESC;

十二、分布式监控

逐 shard 跑相同 SQL 或通过 cluster()

SELECT hostName(), count() AS parts
FROM clusterAllReplicas('prod', system.parts)
WHERE active AND database = 'db' AND table = 'events_local'
GROUP BY hostName();

第 09 篇 Distributed 写入不均时 parts 倾斜可见。


十三、与 observability 栈集成

方式 说明
Prometheus exporter scrape SQL metrics
ClickHouse 存 logs/traces 自举——meta
Grafana CH datasource + 系统表 SQL
告警 Alertmanager 规则 on exporter metrics

指标体系 建议:Ticket 级 告警 parts/merge lag;Page 级 仅当 CH 故障影响业务 SLA。


十四、基线采集脚本框架

#!/bin/bash
# 示例:cron 每分采集 parts 计数 — 须配置 clickhouse-client
clickhouse-client --query "
  SELECT now(), database, table, count() AS parts
  FROM system.parts WHERE active
  GROUP BY database, table
  FORMAT CSV
" >> /var/log/ch_parts_baseline.csv

十五、DuckDB 监控(对照)

DuckDB 无 system.parts——嵌入式用:

PRAGMA database_size;
SELECT * FROM duckdb_memory();

生产 OLAP 监控主战场仍是 ClickHouse;DuckDB 进程内由宿主应用 metrics。


十六、小结

回答什么
parts 是否 too many parts
merges merge 是否堵住
replicas / replication_queue 副本是否 lag
query_log 谁慢、读多少行
mutations ALTER 是否堆积
processes 谁在耗内存

附录 A、system.parts 与 disk 联合

SELECT
    database,
    table,
    formatReadableSize(sum(bytes_on_disk)) AS disk,
    count() AS parts,
    sum(rows) AS rows
FROM system.parts
WHERE active
GROUP BY database, table
ORDER BY sum(bytes_on_disk) DESC
LIMIT 30;

附录 B、ProfileEvents 示例键

Event 含义
SelectedParts 选中 part 数
SelectedMarks 选中 mark 数
OSIOWaitMicroseconds IO 等待
RealTimeMicroseconds 墙钟
MemoryAllocator 相关 分配

query_log.ProfileEvents JSON 解析——键名随版本增删。

附录 C、query_log 表引擎与 TTL

query_log 自身是 MergeTree——可 TTL event_date + INTERVAL 30 DAY 防磁盘涨。log_queries_min_type 控制写入类型。

附录 D、Prometheus 映射思路

业务指标 SQL 来源
parts_total count system.parts
merge_running count system.merges
replica_delay_max max absolute_delay
insert_rows_rate delta InsertedRows

exporter 定时 scrape——阈值在 Grafana 按环境设

附录 E、告警分级建议

级别 条件类型
Page 全 cluster insert 失败、readonly 副本、磁盘>95%
Ticket parts 持续升、mutation 堆积、delay 超 SLA
Chat 单表 parts 接近 delay 阈值

对齐 可观测性告警分级 思路。

附录 F、system.disks 与 storage_policy

SELECT name, path, formatReadableSize(free_space), formatReadableSize(total_space)
FROM system.disks;

多卷 storage_policy 时 merge 临时空间可能在 default disk——规划见 第 16 篇

附录 G、text_log / trace_log

OpenTelemetry 集成可选 system.opentelemetry_span_log(版本相关)——与 observability trace 联动。

附录 H、只读副本监控

system.replicasis_readonly=1zookeeper_exception 非空——Keeper 会话问题。只读副本适合报表,但 delay 过大仍 stale。

附录 I、system.metrics 常用项

Query, Merge, PartMutation, ReplicatedFetch, TCPConnection, HTTPConnection, MemoryTracking——baseline 拍快照对比 delta。

附录 J、asynchronous_metrics 硬件

OSMemoryAvailable, OSCpuLoad, DiskAvailable, Uptime——节点级。与 node_exporter redundant 但 CH 内聚。

附录 K、system.errors

最近错误 counter——突增 NETWORK_ERROR / MEMORY_LIMIT_EXCEEDED 关联告警。

附录 L、part_log / text_log

part_log 记录 part 创建/merge 历史——审计 parts 从哪来。text_log 服务器 log 入库。

附录 M、Grants 审计

SHOW GRANTS FOR user;

附录 N、Weekly review SQL pack

合并 parts top10、slow query top10、replica delay、mutation undone——平台 weekly 例会模板。

附录 · 深度补充(系列交叉索引)

深度 1

第 14 章与系列其它篇章的交叉:读路径见 第 05 篇;merge 见 第 06 篇;索引见 第 07 篇;副本见 第 08 篇;Distributed 见 第 09 篇;监控见 第 14 篇;故障见 第 15 篇;配置见 第 16 篇。 实施任何 setting 变更前,在 staging 用 system.parts / query_log 建立 24h 基线,变更后再对比——避免无证据调参。

深度 2

第 14 章与系列其它篇章的交叉:读路径见 第 05 篇;merge 见 第 06 篇;索引见 第 07 篇;副本见 第 08 篇;Distributed 见 第 09 篇;监控见 第 14 篇;故障见 第 15 篇;配置见 第 16 篇。 实施任何 setting 变更前,在 staging 用 system.parts / query_log 建立 24h 基线,变更后再对比——避免无证据调参。

深度 3

第 14 章与系列其它篇章的交叉:读路径见 第 05 篇;merge 见 第 06 篇;索引见 第 07 篇;副本见 第 08 篇;Distributed 见 第 09 篇;监控见 第 14 篇;故障见 第 15 篇;配置见 第 16 篇。 实施任何 setting 变更前,在 staging 用 system.parts / query_log 建立 24h 基线,变更后再对比——避免无证据调参。

深度 4

第 14 章与系列其它篇章的交叉:读路径见 第 05 篇;merge 见 第 06 篇;索引见 第 07 篇;副本见 第 08 篇;Distributed 见 第 09 篇;监控见 第 14 篇;故障见 第 15 篇;配置见 第 16 篇。 实施任何 setting 变更前,在 staging 用 system.parts / query_log 建立 24h 基线,变更后再对比——避免无证据调参。

深度 5

第 14 章与系列其它篇章的交叉:读路径见 第 05 篇;merge 见 第 06 篇;索引见 第 07 篇;副本见 第 08 篇;Distributed 见 第 09 篇;监控见 第 14 篇;故障见 第 15 篇;配置见 第 16 篇。 实施任何 setting 变更前,在 staging 用 system.parts / query_log 建立 24h 基线,变更后再对比——避免无证据调参。

深度 6

第 14 章与系列其它篇章的交叉:读路径见 第 05 篇;merge 见 第 06 篇;索引见 第 07 篇;副本见 第 08 篇;Distributed 见 第 09 篇;监控见 第 14 篇;故障见 第 15 篇;配置见 第 16 篇。 实施任何 setting 变更前,在 staging 用 system.parts / query_log 建立 24h 基线,变更后再对比——避免无证据调参。

深度 7

第 14 章与系列其它篇章的交叉:读路径见 第 05 篇;merge 见 第 06 篇;索引见 第 07 篇;副本见 第 08 篇;Distributed 见 第 09 篇;监控见 第 14 篇;故障见 第 15 篇;配置见 第 16 篇。 实施任何 setting 变更前,在 staging 用 system.parts / query_log 建立 24h 基线,变更后再对比——避免无证据调参。

深度 8

第 14 章与系列其它篇章的交叉:读路径见 第 05 篇;merge 见 第 06 篇;索引见 第 07 篇;副本见 第 08 篇;Distributed 见 第 09 篇;监控见 第 14 篇;故障见 第 15 篇;配置见 第 16 篇。 实施任何 setting 变更前,在 staging 用 system.parts / query_log 建立 24h 基线,变更后再对比——避免无证据调参。

深度 9

第 14 章与系列其它篇章的交叉:读路径见 第 05 篇;merge 见 第 06 篇;索引见 第 07 篇;副本见 第 08 篇;Distributed 见 第 09 篇;监控见 第 14 篇;故障见 第 15 篇;配置见 第 16 篇。 实施任何 setting 变更前,在 staging 用 system.parts / query_log 建立 24h 基线,变更后再对比——避免无证据调参。

深度 10

第 14 章与系列其它篇章的交叉:读路径见 第 05 篇;merge 见 第 06 篇;索引见 第 07 篇;副本见 第 08 篇;Distributed 见 第 09 篇;监控见 第 14 篇;故障见 第 15 篇;配置见 第 16 篇。 实施任何 setting 变更前,在 staging 用 system.parts / query_log 建立 24h 基线,变更后再对比——避免无证据调参。

深度 11

第 14 章与系列其它篇章的交叉:读路径见 第 05 篇;merge 见 第 06 篇;索引见 第 07 篇;副本见 第 08 篇;Distributed 见 第 09 篇;监控见 第 14 篇;故障见 第 15 篇;配置见 第 16 篇。 实施任何 setting 变更前,在 staging 用 system.parts / query_log 建立 24h 基线,变更后再对比——避免无证据调参。

深度 12

第 14 章与系列其它篇章的交叉:读路径见 第 05 篇;merge 见 第 06 篇;索引见 第 07 篇;副本见 第 08 篇;Distributed 见 第 09 篇;监控见 第 14 篇;故障见 第 15 篇;配置见 第 16 篇。 实施任何 setting 变更前,在 staging 用 system.parts / query_log 建立 24h 基线,变更后再对比——避免无证据调参。

深度 13

第 14 章与系列其它篇章的交叉:读路径见 第 05 篇;merge 见 第 06 篇;索引见 第 07 篇;副本见 第 08 篇;Distributed 见 第 09 篇;监控见 第 14 篇;故障见 第 15 篇;配置见 第 16 篇。 实施任何 setting 变更前,在 staging 用 system.parts / query_log 建立 24h 基线,变更后再对比——避免无证据调参。

深度 14

第 14 章与系列其它篇章的交叉:读路径见 第 05 篇;merge 见 第 06 篇;索引见 第 07 篇;副本见 第 08 篇;Distributed 见 第 09 篇;监控见 第 14 篇;故障见 第 15 篇;配置见 第 16 篇。 实施任何 setting 变更前,在 staging 用 system.parts / query_log 建立 24h 基线,变更后再对比——避免无证据调参。

深度 15

第 14 章与系列其它篇章的交叉:读路径见 第 05 篇;merge 见 第 06 篇;索引见 第 07 篇;副本见 第 08 篇;Distributed 见 第 09 篇;监控见 第 14 篇;故障见 第 15 篇;配置见 第 16 篇。 实施任何 setting 变更前,在 staging 用 system.parts / query_log 建立 24h 基线,变更后再对比——避免无证据调参。

深度 16

第 14 章与系列其它篇章的交叉:读路径见 第 05 篇;merge 见 第 06 篇;索引见 第 07 篇;副本见 第 08 篇;Distributed 见 第 09 篇;监控见 第 14 篇;故障见 第 15 篇;配置见 第 16 篇。 实施任何 setting 变更前,在 staging 用 system.parts / query_log 建立 24h 基线,变更后再对比——避免无证据调参。

深度 17

第 14 章与系列其它篇章的交叉:读路径见 第 05 篇;merge 见 第 06 篇;索引见 第 07 篇;副本见 第 08 篇;Distributed 见 第 09 篇;监控见 第 14 篇;故障见 第 15 篇;配置见 第 16 篇。 实施任何 setting 变更前,在 staging 用 system.parts / query_log 建立 24h 基线,变更后再对比——避免无证据调参。

深度 18

第 14 章与系列其它篇章的交叉:读路径见 第 05 篇;merge 见 第 06 篇;索引见 第 07 篇;副本见 第 08 篇;Distributed 见 第 09 篇;监控见 第 14 篇;故障见 第 15 篇;配置见 第 16 篇。 实施任何 setting 变更前,在 staging 用 system.parts / query_log 建立 24h 基线,变更后再对比——避免无证据调参。

深度 19

第 14 章与系列其它篇章的交叉:读路径见 第 05 篇;merge 见 第 06 篇;索引见 第 07 篇;副本见 第 08 篇;Distributed 见 第 09 篇;监控见 第 14 篇;故障见 第 15 篇;配置见 第 16 篇。 实施任何 setting 变更前,在 staging 用 system.parts / query_log 建立 24h 基线,变更后再对比——避免无证据调参。

深度 20

第 14 章与系列其它篇章的交叉:读路径见 第 05 篇;merge 见 第 06 篇;索引见 第 07 篇;副本见 第 08 篇;Distributed 见 第 09 篇;监控见 第 14 篇;故障见 第 15 篇;配置见 第 16 篇。 实施任何 setting 变更前,在 staging 用 system.parts / query_log 建立 24h 基线,变更后再对比——避免无证据调参。

深度 21

第 14 章与系列其它篇章的交叉:读路径见 第 05 篇;merge 见 第 06 篇;索引见 第 07 篇;副本见 第 08 篇;Distributed 见 第 09 篇;监控见 第 14 篇;故障见 第 15 篇;配置见 第 16 篇。 实施任何 setting 变更前,在 staging 用 system.parts / query_log 建立 24h 基线,变更后再对比——避免无证据调参。

深度 22

第 14 章与系列其它篇章的交叉:读路径见 第 05 篇;merge 见 第 06 篇;索引见 第 07 篇;副本见 第 08 篇;Distributed 见 第 09 篇;监控见 第 14 篇;故障见 第 15 篇;配置见 第 16 篇。 实施任何 setting 变更前,在 staging 用 system.parts / query_log 建立 24h 基线,变更后再对比——避免无证据调参。

深度 23

第 14 章与系列其它篇章的交叉:读路径见 第 05 篇;merge 见 第 06 篇;索引见 第 07 篇;副本见 第 08 篇;Distributed 见 第 09 篇;监控见 第 14 篇;故障见 第 15 篇;配置见 第 16 篇。 实施任何 setting 变更前,在 staging 用 system.parts / query_log 建立 24h 基线,变更后再对比——避免无证据调参。

深度 24

第 14 章与系列其它篇章的交叉:读路径见 第 05 篇;merge 见 第 06 篇;索引见 第 07 篇;副本见 第 08 篇;Distributed 见 第 09 篇;监控见 第 14 篇;故障见 第 15 篇;配置见 第 16 篇。 实施任何 setting 变更前,在 staging 用 system.parts / query_log 建立 24h 基线,变更后再对比——避免无证据调参。


附录 · 工程深化索引

深化 1:system.parts 列含义

检查项 说明 关联篇章
机制 system.parts 列含义 在 ClickHouse 24.x 中的默认行为 第 05 篇
运维 staging 用 system.parts / query_log 建 24h 基线 第 14 篇
故障 与 parts/merge 相关的典型信号 第 15 篇
配置 相关 setting 变更须可回滚 第 16 篇
flowchart LR
  Q[查询/写入] --> P[parts 状态]
  P --> M[merge 后台]
  M --> MON[system.merges]
  MON --> CFG[配置调优]

深化 2:active vs outdated

检查项 说明 关联篇章
机制 active vs outdated 在 ClickHouse 24.x 中的默认行为 第 05 篇
运维 staging 用 system.parts / query_log 建 24h 基线 第 14 篇
故障 与 parts/merge 相关的典型信号 第 15 篇
配置 相关 setting 变更须可回滚 第 16 篇
flowchart LR
  Q[查询/写入] --> P[parts 状态]
  P --> M[merge 后台]
  M --> MON[system.merges]
  MON --> CFG[配置调优]

深化 3:system.merges 进度

检查项 说明 关联篇章
机制 system.merges 进度 在 ClickHouse 24.x 中的默认行为 第 05 篇
运维 staging 用 system.parts / query_log 建 24h 基线 第 14 篇
故障 与 parts/merge 相关的典型信号 第 15 篇
配置 相关 setting 变更须可回滚 第 16 篇
flowchart LR
  Q[查询/写入] --> P[parts 状态]
  P --> M[merge 后台]
  M --> MON[system.merges]
  MON --> CFG[配置调优]

深化 4:system.replication_queue

检查项 说明 关联篇章
机制 system.replication_queue 在 ClickHouse 24.x 中的默认行为 第 05 篇
运维 staging 用 system.parts / query_log 建 24h 基线 第 14 篇
故障 与 parts/merge 相关的典型信号 第 15 篇
配置 相关 setting 变更须可回滚 第 16 篇
flowchart LR
  Q[查询/写入] --> P[parts 状态]
  P --> M[merge 后台]
  M --> MON[system.merges]
  MON --> CFG[配置调优]

深化 5:system.mutations

检查项 说明 关联篇章
机制 system.mutations 在 ClickHouse 24.x 中的默认行为 第 05 篇
运维 staging 用 system.parts / query_log 建 24h 基线 第 14 篇
故障 与 parts/merge 相关的典型信号 第 15 篇
配置 相关 setting 变更须可回滚 第 16 篇
flowchart LR
  Q[查询/写入] --> P[parts 状态]
  P --> M[merge 后台]
  M --> MON[system.merges]
  MON --> CFG[配置调优]

深化 6:system.query_log

检查项 说明 关联篇章
机制 system.query_log 在 ClickHouse 24.x 中的默认行为 第 05 篇
运维 staging 用 system.parts / query_log 建 24h 基线 第 14 篇
故障 与 parts/merge 相关的典型信号 第 15 篇
配置 相关 setting 变更须可回滚 第 16 篇
flowchart LR
  Q[查询/写入] --> P[parts 状态]
  P --> M[merge 后台]
  M --> MON[system.merges]
  MON --> CFG[配置调优]

深化 7:system.metrics 内存

检查项 说明 关联篇章
机制 system.metrics 内存 在 ClickHouse 24.x 中的默认行为 第 05 篇
运维 staging 用 system.parts / query_log 建 24h 基线 第 14 篇
故障 与 parts/merge 相关的典型信号 第 15 篇
配置 相关 setting 变更须可回滚 第 16 篇
flowchart LR
  Q[查询/写入] --> P[parts 状态]
  P --> M[merge 后台]
  M --> MON[system.merges]
  MON --> CFG[配置调优]

深化 8:system.asynchronous_metrics

检查项 说明 关联篇章
机制 system.asynchronous_metrics 在 ClickHouse 24.x 中的默认行为 第 05 篇
运维 staging 用 system.parts / query_log 建 24h 基线 第 14 篇
故障 与 parts/merge 相关的典型信号 第 15 篇
配置 相关 setting 变更须可回滚 第 16 篇
flowchart LR
  Q[查询/写入] --> P[parts 状态]
  P --> M[merge 后台]
  M --> MON[system.merges]
  MON --> CFG[配置调优]

深化 9:system.events 计数

检查项 说明 关联篇章
机制 system.events 计数 在 ClickHouse 24.x 中的默认行为 第 05 篇
运维 staging 用 system.parts / query_log 建 24h 基线 第 14 篇
故障 与 parts/merge 相关的典型信号 第 15 篇
配置 相关 setting 变更须可回滚 第 16 篇
flowchart LR
  Q[查询/写入] --> P[parts 状态]
  P --> M[merge 后台]
  M --> MON[system.merges]
  MON --> CFG[配置调优]

深化 10:ProfileEvents 解读

检查项 说明 关联篇章
机制 ProfileEvents 解读 在 ClickHouse 24.x 中的默认行为 第 05 篇
运维 staging 用 system.parts / query_log 建 24h 基线 第 14 篇
故障 与 parts/merge 相关的典型信号 第 15 篇
配置 相关 setting 变更须可回滚 第 16 篇
flowchart LR
  Q[查询/写入] --> P[parts 状态]
  P --> M[merge 后台]
  M --> MON[system.merges]
  MON --> CFG[配置调优]

深化 11:max_memory_usage 跟踪

检查项 说明 关联篇章
机制 max_memory_usage 跟踪 在 ClickHouse 24.x 中的默认行为 第 05 篇
运维 staging 用 system.parts / query_log 建 24h 基线 第 14 篇
故障 与 parts/merge 相关的典型信号 第 15 篇
配置 相关 setting 变更须可回滚 第 16 篇
flowchart LR
  Q[查询/写入] --> P[parts 状态]
  P --> M[merge 后台]
  M --> MON[system.merges]
  MON --> CFG[配置调优]

深化 12:merge 延迟 SLA

检查项 说明 关联篇章
机制 merge 延迟 SLA 在 ClickHouse 24.x 中的默认行为 第 05 篇
运维 staging 用 system.parts / query_log 建 24h 基线 第 14 篇
故障 与 parts/merge 相关的典型信号 第 15 篇
配置 相关 setting 变更须可回滚 第 16 篇
flowchart LR
  Q[查询/写入] --> P[parts 状态]
  P --> M[merge 后台]
  M --> MON[system.merges]
  MON --> CFG[配置调优]

深化 13:副本 lag 告警

检查项 说明 关联篇章
机制 副本 lag 告警 在 ClickHouse 24.x 中的默认行为 第 05 篇
运维 staging 用 system.parts / query_log 建 24h 基线 第 14 篇
故障 与 parts/merge 相关的典型信号 第 15 篇
配置 相关 setting 变更须可回滚 第 16 篇
flowchart LR
  Q[查询/写入] --> P[parts 状态]
  P --> M[merge 后台]
  M --> MON[system.merges]
  MON --> CFG[配置调优]

深化 14:parts 数阈值

检查项 说明 关联篇章
机制 parts 数阈值 在 ClickHouse 24.x 中的默认行为 第 05 篇
运维 staging 用 system.parts / query_log 建 24h 基线 第 14 篇
故障 与 parts/merge 相关的典型信号 第 15 篇
配置 相关 setting 变更须可回滚 第 16 篇
flowchart LR
  Q[查询/写入] --> P[parts 状态]
  P --> M[merge 后台]
  M --> MON[system.merges]
  MON --> CFG[配置调优]

深化 15:insert 延迟与 delay

检查项 说明 关联篇章
机制 insert 延迟与 delay 在 ClickHouse 24.x 中的默认行为 第 05 篇
运维 staging 用 system.parts / query_log 建 24h 基线 第 14 篇
故障 与 parts/merge 相关的典型信号 第 15 篇
配置 相关 setting 变更须可回滚 第 16 篇
flowchart LR
  Q[查询/写入] --> P[parts 状态]
  P --> M[merge 后台]
  M --> MON[system.merges]
  MON --> CFG[配置调优]

深化 16:磁盘剩余预警

检查项 说明 关联篇章
机制 磁盘剩余预警 在 ClickHouse 24.x 中的默认行为 第 05 篇
运维 staging 用 system.parts / query_log 建 24h 基线 第 14 篇
故障 与 parts/merge 相关的典型信号 第 15 篇
配置 相关 setting 变更须可回滚 第 16 篇
flowchart LR
  Q[查询/写入] --> P[parts 状态]
  P --> M[merge 后台]
  M --> MON[system.merges]
  MON --> CFG[配置调优]

深化 17:ZooKeeper/Keeper 会话

检查项 说明 关联篇章
机制 ZooKeeper/Keeper 会话 在 ClickHouse 24.x 中的默认行为 第 05 篇
运维 staging 用 system.parts / query_log 建 24h 基线 第 14 篇
故障 与 parts/merge 相关的典型信号 第 15 篇
配置 相关 setting 变更须可回滚 第 16 篇
flowchart LR
  Q[查询/写入] --> P[parts 状态]
  P --> M[merge 后台]
  M --> MON[system.merges]
  MON --> CFG[配置调优]

深化 18:分布式查询慢

检查项 说明 关联篇章
机制 分布式查询慢 在 ClickHouse 24.x 中的默认行为 第 05 篇
运维 staging 用 system.parts / query_log 建 24h 基线 第 14 篇
故障 与 parts/merge 相关的典型信号 第 15 篇
配置 相关 setting 变更须可回滚 第 16 篇
flowchart LR
  Q[查询/写入] --> P[parts 状态]
  P --> M[merge 后台]
  M --> MON[system.merges]
  MON --> CFG[配置调优]

深化 19:mutation 堆积

检查项 说明 关联篇章
机制 mutation 堆积 在 ClickHouse 24.x 中的默认行为 第 05 篇
运维 staging 用 system.parts / query_log 建 24h 基线 第 14 篇
故障 与 parts/merge 相关的典型信号 第 15 篇
配置 相关 setting 变更须可回滚 第 16 篇
flowchart LR
  Q[查询/写入] --> P[parts 状态]
  P --> M[merge 后台]
  M --> MON[system.merges]
  MON --> CFG[配置调优]

深化 20:Prometheus exporter

检查项 说明 关联篇章
机制 Prometheus exporter 在 ClickHouse 24.x 中的默认行为 第 05 篇
运维 staging 用 system.parts / query_log 建 24h 基线 第 14 篇
故障 与 parts/merge 相关的典型信号 第 15 篇
配置 相关 setting 变更须可回滚 第 16 篇
flowchart LR
  Q[查询/写入] --> P[parts 状态]
  P --> M[merge 后台]
  M --> MON[system.merges]
  MON --> CFG[配置调优]

深化 21:Grafana 面板模板

检查项 说明 关联篇章
机制 Grafana 面板模板 在 ClickHouse 24.x 中的默认行为 第 05 篇
运维 staging 用 system.parts / query_log 建 24h 基线 第 14 篇
故障 与 parts/merge 相关的典型信号 第 15 篇
配置 相关 setting 变更须可回滚 第 16 篇
flowchart LR
  Q[查询/写入] --> P[parts 状态]
  P --> M[merge 后台]
  M --> MON[system.merges]
  MON --> CFG[配置调优]

深化 22:on-call runbook

检查项 说明 关联篇章
机制 on-call runbook 在 ClickHouse 24.x 中的默认行为 第 05 篇
运维 staging 用 system.parts / query_log 建 24h 基线 第 14 篇
故障 与 parts/merge 相关的典型信号 第 15 篇
配置 相关 setting 变更须可回滚 第 16 篇
flowchart LR
  Q[查询/写入] --> P[parts 状态]
  P --> M[merge 后台]
  M --> MON[system.merges]
  MON --> CFG[配置调优]

深化 23:基线对比方法

检查项 说明 关联篇章
机制 基线对比方法 在 ClickHouse 24.x 中的默认行为 第 05 篇
运维 staging 用 system.parts / query_log 建 24h 基线 第 14 篇
故障 与 parts/merge 相关的典型信号 第 15 篇
配置 相关 setting 变更须可回滚 第 16 篇
flowchart LR
  Q[查询/写入] --> P[parts 状态]
  P --> M[merge 后台]
  M --> MON[system.merges]
  MON --> CFG[配置调优]

深化 24:24h 滚动窗口

检查项 说明 关联篇章
机制 24h 滚动窗口 在 ClickHouse 24.x 中的默认行为 第 05 篇
运维 staging 用 system.parts / query_log 建 24h 基线 第 14 篇
故障 与 parts/merge 相关的典型信号 第 15 篇
配置 相关 setting 变更须可回滚 第 16 篇
flowchart LR
  Q[查询/写入] --> P[parts 状态]
  P --> M[merge 后台]
  M --> MON[system.merges]
  MON --> CFG[配置调优]

深化 25:变更前后对照

检查项 说明 关联篇章
机制 变更前后对照 在 ClickHouse 24.x 中的默认行为 第 05 篇
运维 staging 用 system.parts / query_log 建 24h 基线 第 14 篇
故障 与 parts/merge 相关的典型信号 第 15 篇
配置 相关 setting 变更须可回滚 第 16 篇
flowchart LR
  Q[查询/写入] --> P[parts 状态]
  P --> M[merge 后台]
  M --> MON[system.merges]
  MON --> CFG[配置调优]

深化 26:system.parts 列含义

检查项 说明 关联篇章
机制 system.parts 列含义 在 ClickHouse 24.x 中的默认行为 第 05 篇
运维 staging 用 system.parts / query_log 建 24h 基线 第 14 篇
故障 与 parts/merge 相关的典型信号 第 15 篇
配置 相关 setting 变更须可回滚 第 16 篇
flowchart LR
  Q[查询/写入] --> P[parts 状态]
  P --> M[merge 后台]
  M --> MON[system.merges]
  MON --> CFG[配置调优]

深化 27:active vs outdated

检查项 说明 关联篇章
机制 active vs outdated 在 ClickHouse 24.x 中的默认行为 第 05 篇
运维 staging 用 system.parts / query_log 建 24h 基线 第 14 篇
故障 与 parts/merge 相关的典型信号 第 15 篇
配置 相关 setting 变更须可回滚 第 16 篇
flowchart LR
  Q[查询/写入] --> P[parts 状态]
  P --> M[merge 后台]
  M --> MON[system.merges]
  MON --> CFG[配置调优]

深化 28:system.merges 进度

检查项 说明 关联篇章
机制 system.merges 进度 在 ClickHouse 24.x 中的默认行为 第 05 篇
运维 staging 用 system.parts / query_log 建 24h 基线 第 14 篇
故障 与 parts/merge 相关的典型信号 第 15 篇
配置 相关 setting 变更须可回滚 第 16 篇
flowchart LR
  Q[查询/写入] --> P[parts 状态]
  P --> M[merge 后台]
  M --> MON[system.merges]
  MON --> CFG[配置调优]

上一篇选型对照

下一篇经典故障模式

参考资料

  1. ClickHouse Documentation, System tables, 24.x
  2. ClickHouse Documentation, Monitoring
  3. Altinity Knowledge Base — 运维查询(B 级,版本标注)

同主题继续阅读

把当前热点继续串成多页阅读,而不是停在单篇消费。

2026-06-18 · database / storage

【列存引擎内核】Merge 与 Mutation

MergeTree 后台 merge 触发与 selector、ReplacingMergeTree/CollapsingMergeTree 语义、ALTER UPDATE/DELETE mutation 异步路径与危害。对照 LSM compaction。源码 MergeTreeDataMergerMutator。24.x LTS。

2026-06-18 · database / distributed

【列存引擎内核】ReplicatedMergeTree

ReplicatedMergeTree 副本协调:Log entry、ClickHouse Keeper/ZooKeeper 路径、副本同步与 recovery。双节点实验步骤(本环境未部署)。24.x LTS 默认推荐 Keeper。

2026-06-18 · database / architecture

【列存引擎内核】经典故障模式

Too many parts、merge 跟不上 insert、mutation 堆积、副本延迟与 lost replica、max_memory_usage OOM 的症状链、根因与缓解;附测试环境复现框架。

2026-06-18 · database / storage

【列存引擎内核】列存基础与 ClickHouse 架构

行存 vs 列存的带宽、压缩与向量化三角;ClickHouse Server 进程模型、线程池与 MergeTree 引擎家族地图;src/Storages 与 src/Processors 源码入口。对照 PG 行存与 LSM 写优化路径,版本锚定 ClickHouse 24.x LTS。


By .