ClickHouse 默认 settings 面向 中等 batch 的通用
OLAP——直接接 Kafka 小消息或 ORM 逐行 insert
时,默认 parts_to_throw_insert 与 merge 池大小
并不「自动适配业务」。本文梳理 MergeTree
与服务器级 易踩配置、SSD/HDD
差异、内存与磁盘容量估算方法,交叉 故障模式(第
15 篇) 与 监控(第 14
篇)。
不给虚构 TPS/磁盘数字——给出公式与检查清单,数值在目标环境代入。
版本锚定:ClickHouse 24.x LTS。
一、配置层级
| 层级 | 位置 | 示例 |
|---|---|---|
| 服务器默认 | config.xml / users |
max_memory_usage |
| Profile | users.xml |
只读用户限额 |
| Session | SET |
临时调大 limit |
| 表级 | SETTINGS in CREATE/ALTER |
index_granularity |
| MergeTree | SETTINGS on engine |
parts_to_throw_insert |
表级 MergeTree settings 优先级高——适合 per-table 调 parts 阈值。
二、parts_to_throw_insert / parts_to_delay_insert
2.1 语义
parts_to_delay_insert:单分区 active parts 超阈值 → insert sleep 降速;parts_to_throw_insert:更高阈值 → 拒绝 insert。
(默认值查 24.x 文档——版本间可能调整。)
2.2 陷阱
| 陷阱 | 后果 |
|---|---|
| 只调 throw 不调 delay | 突然硬失败而非预警 |
| 盲目调极大 throw | merge/OOM 掩盖,磁盘 metadata 膨胀 |
| 忽略 per partition | 单分区爆炸仍触发 |
2.3 规划方法
- 估算峰值 insert RPS × 每 insert part 数;
- 估算 merge 吞吐(parts/hour)—— 须实测
system.eventsMergedRows; - 稳态 parts ≈ ingest / merge_rate × 安全系数;
- 设置 delay < throw,留 margin。
监控:system.parts count 趋势(第 14
篇)。
三、merge 线程池与并发
3.1 相关 settings
| Setting | 作用 |
|---|---|
background_pool_size |
后台任务总池 |
background_merges_mutations_concurrency |
merge+mutation 并发 |
background_schedule_pool_size |
调度 |
池过小 → merge lag;过大 → IO/CPU 争抢。
3.2 SSD vs HDD
| 介质 | 建议方向 |
|---|---|
| NVMe SSD | 可适度提高 merge 并发;parts 阈值可紧(merge 快) |
| HDD | 降低并发避免 seek 风暴;增大 insert batch;考虑 TTL 到 SSD tier |
| 冷热分层 | storage_policy 热 SSD 冷 S3/HDD |
HDD 上 小 part 随机读 也伤害查询——不只 merge 问题(读路径 第 05 篇)。
3.3 max_bytes_to_merge_at_max_space_in_pool
限制单次 merge 选中 part 总大小——防 merge 内存/磁盘峰值。过大 part 无法合并时 level 停滞:
SELECT max(bytes_on_disk) FROM system.parts WHERE active AND table = 't';若接近该 setting,需 OPTIMIZE
或调高(权衡内存)。
四、merge_max_block_size
控制 merge 输出 block 行数上界——影响 merged part 粒度与后续 merge 频率。
- 过大:单次 merge 耗时长、内存高;
- 过小:part 仍碎、metadata 多。
与 max_insert_block_size 协调——insert block
与 merge block 同一量级常更稳。
五、内存预算
5.1 三层 limit
单查询 max_memory_usage
↓
用户 max_memory_usage_for_user
↓
进程 max_server_memory_usage (或 ratio)
5.2 merge/mutation 内存
Merge 占用常接近 合并 part 解压和——规划 RAM:
\[ M_{\text{server}} \geq M_{\text{queries}} + M_{\text{merge}} + M_{\text{os cache}} \]
\(M_{\text{merge}}\)
粗估:并发 merge 数 × 单 merge
max_bytes_to_merge 解压系数——解压后常
2–10× 压缩比,依 编码(第
03 篇) 而定,须抽样测。
5.3 external group by / sort
max_bytes_before_external_group_by、max_bytes_before_external_sort
触发磁盘 spill——SSD 路径必配 tmp_path
空间。
六、磁盘容量
6.1 组成
- 数据 part(压缩);
- 合并临时空间(峰值可达 同时存在输入 part + 输出 part);
- mutation 重写;
system/ log;- detached_parts 泄漏。
6.2 安全系数
规划可用磁盘:
\[ D_{\text{need}} = D_{\text{data}} \times (1 + f_{\text{merge}} + f_{\text{mutation}} + f_{\text{headroom}}) \]
\(f_{\text{headroom}}\) 工程上常 0.2–0.3,视 compaction 策略实测——不写死 1.3。
6.3 TTL 与 S3
TTL ... TO DISK 'cold' /
TO VOLUME —— 热层 SSD
容量单独规划;冷层延迟接受。
七、insert 路径 settings
| Setting | 说明 |
|---|---|
max_insert_block_size |
insert 块行数 |
min_insert_block_size_rows |
最小 flush |
async_insert |
服务端攒 batch |
wait_for_async_insert |
客户端是否等待 |
Kafka:kafka_max_block_size、stream_flush_interval_ms(名以文档为准)。
八、查询与并发
| Setting | 陷阱 |
|---|---|
max_threads |
过大 × 高并发 → CPU 过载 |
max_concurrent_queries |
0 无限 |
max_execution_time |
无超时慢查拖死 |
只读副本 + max_threads 限制给 BI,保护
ingest 节点。
九、分布式配置
| Setting | 说明 |
|---|---|
load_balancing |
读 replica 策略 |
insert_distributed_sync |
写入一致性 vs 延迟 |
optimize_skip_unused_shards |
单 shard 优化 |
集群容量 = shard 数 × 单 shard 规划——非线性(协调节点、Keeper)。
十、ReplicatedMergeTree 与 Keeper
- Keeper 节点数 3/5 odd;
- 磁盘低延迟 SSD;
session_timeout_ms与网络抖动;- 勿与 heavy log 盘混用。
副本数 × 数据 = 总存储——HA 成本线性增。
十一、表 DDL 容量相关
| DDL 选择 | 容量影响 |
|---|---|
PARTITION BY 粒度 |
过细 → parts 乘数 |
ORDER BY 键 |
影响 merge 局部性 |
| 跳数索引 | 额外磁盘,减 scan |
LowCardinality |
降内存/磁盘 string |
| Projection | 额外存储换 query |
十二、DuckDB 容量对照
| 项 | DuckDB |
|---|---|
| 文件大小 | 单 .duckdb |
| 并行 | threads |
| 内存 | memory_limit |
| spill | temp_directory |
无 parts_to_throw——但 单文件过大 checkpoint 慢;Parquet 外链不增 DB 文件。
十三、容量规划工作流
flowchart TD
A[业务: 保留期 × 行宽 × QPS] --> B[估算压缩后数据量]
B --> C[选 PARTITION/ORDER BY]
C --> D[测 insert batch + parts 增长率]
D --> E[测 merge 吞吐]
E --> F[定 parts 阈值 + merge 池]
F --> G[定 RAM: query + merge]
G --> H[定磁盘: 数据 + merge 峰值]
H --> I[监控告警上线]
- 用 representational 负载灌测试集群;
- 跑 24–72h 观察
system.parts、merges; - 调 settings 后重复;
- 文档化 团队 insert 规范(batch 大小)。
十四、配置审查 checklist
十五、小结
容量规划 = insert 模式 + merge 能力 + 内存/磁盘三角;默认 config 不会替业务做 batch。SSD 与 HDD 策略差异在 merge 并发与 insert 粒度;Replicated 与 Distributed 乘法存储。
附录 A、storage_policy 多卷示例结构
<!-- 合成示例,部署前验证 -->
<storage_configuration>
<disks>
<hot><path>/mnt/nvme/clickhouse/</path></hot>
<cold><path>/mnt/hdd/clickhouse/</path></cold>
</disks>
<policies>
<tiered>
<volumes>
<hot><disk>hot</disk></hot>
<cold><disk>cold</disk></cold>
</volumes>
</tiered>
</policies>
</storage_configuration>表 SETTINGS storage_policy='tiered' + TTL
MOVE。
附录 B、mark_cache / uncompressed_cache
Mark cache 减少 .mrk 随机读;uncompressed
cache 缓存热点解压块——RAM 充足时可调高
比例,须测 hit
rate(system.metrics 相关项视版本)。
附录 C、users.xml 配额
<profiles>
<readonly>
<readonly>1</readonly>
<max_execution_time>300</max_execution_time>
</readonly>
</profiles>BI 只读 profile 限制 max_memory_usage
防拖垮集群。
附录 D、网络带宽
Distributed scatter-gather 与 replication
复制争用带宽——跨 DC 复制需限速
settings(max_replicated_fetches_network_bandwidth
等,查文档)。
附录 E、备份容量
BACKUP TO S3 增量备份仍占对象存储;规划 =
数据 + 版本 + 保留策略。恢复演练占临时磁盘。
附录 F、merge_tree 表级 settings 模板
CREATE TABLE t (...)
ENGINE = ReplicatedMergeTree(...)
PARTITION BY toYYYYMM(d)
ORDER BY (d, id)
SETTINGS
index_granularity = 8192,
parts_to_delay_insert = 150,
parts_to_throw_insert = 300;数值 必须 按本集群 parts 增长率调——非 universal 默认。
附录 G、HDD 合并策略
降低
background_merges_mutations_concurrency;增大
insert batch;避免宽表高频 alter;查询 SLA 放 SSD
replica。
附录 H、CH Cloud 边界
托管版自动调 parts/merge——本系列针对 自建 MergeTree 内核;Cloud 用户仍应理解 parts 语义读官方 SLA。
附录 I、DuckDB 容量参数
SET memory_limit='8GB';
SET threads=8;
SET max_temp_directory_size='100GB';
PRAGMA database_size;单文件 DB 增长上限 = 磁盘;checkpoint 峰值需额外 headroom。
附录 J、容量估算 worksheet(填本地数)
| 项 | 公式/来源 |
|---|---|
| 日增压缩数据 | 实测 insert |
| 保留天数 | 业务 |
| 副本数 | HA |
| merge 临时 | ~1× 最大 part(粗估) |
| 备份 | 增量策略 |
附录 K、max_table_size_to_drop / truncate 保护
防误删大表——须显式提 setting 才 DROP。生产建议开启。
附录 L、timezone 与 PARTITION
DateTime 分区按 server
timezone——跨区业务统一 UTC 或显式
toDate(ts, 'UTC')。
附录 M、compression 与 capacity
高压缩率 codec CPU 高——第 03 篇。容量规划 CPU 与磁盘 tradeoff。
附录 N、S3 冷存 cost
TTL TO VOLUME 's3' 对象请求费——频繁 merge 与
S3 交互贵。Archive 分区 detach。
附录 O、Kubernetes requests/limits
CH pod memory limit 须低于
max_server_memory_usage 配置——否则 OOMKill 无
graceful。
附录 P、macros 与 ON CLUSTER
错误 macro → DDL 部分节点失败 →
distributed_ddl_queue 半成功——部署 ansible 校验
macro。
附录 Q、Capacity review 季度模板
parts 趋势、磁盘 90 天预测、merge CPU%、mutation backlog、升级计划——表格留空填本地数。
附录 · 深度补充(系列交叉索引)
深度 1
第 16 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 2
第 16 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 3
第 16 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 4
第 16 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 5
第 16 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 6
第 16 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 7
第 16 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 8
第 16 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 9
第 16 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 10
第 16 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 11
第 16 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 12
第 16 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 13
第 16 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 14
第 16 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 15
第 16 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 16
第 16 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 17
第 16 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 18
第 16 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 19
第 16 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 20
第 16 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 21
第 16 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 22
第 16 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 23
第 16 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
深度 24
第 16 章与系列其它篇章的交叉:读路径见 第 05
篇;merge 见 第 06
篇;索引见 第 07
篇;副本见 第
08 篇;Distributed 见 第
09 篇;监控见 第 14
篇;故障见 第 15
篇;配置见 第 16
篇。 实施任何 setting 变更前,在 staging 用
system.parts / query_log 建立 24h
基线,变更后再对比——避免无证据调参。
附录 · 工程深化索引
深化 1:parts_to_delay_insert
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | parts_to_delay_insert 在 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:parts_to_throw_insert
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | parts_to_throw_insert 在 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:merge_max_block_size
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | merge_max_block_size 在 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:max_bytes_to_merge_at_max_space_in_pool
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | max_bytes_to_merge_at_max_space_in_pool 在 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:number_of_free_entries_in_pool_to_execute_mutation
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | number_of_free_entries_in_pool_to_execute_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[配置调优]
深化 6:background_pool_size
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | background_pool_size 在 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:background_merges_mutations_concurrency
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | background_merges_mutations_concurrency 在 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:max_insert_block_size
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | max_insert_block_size 在 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:min_insert_block_size_rows
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | min_insert_block_size_rows 在 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:max_threads 读
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | max_threads 读 在 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:max_bytes_before_external_group_by
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | max_bytes_before_external_group_by 在 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:mark_cache_size
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | mark_cache_size 在 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:uncompressed_cache_size
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | uncompressed_cache_size 在 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:storage_policy 多盘
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | storage_policy 多盘 在 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:TTL move 策略
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | TTL move 策略 在 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:SSD vs HDD merge
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | SSD vs HDD merge 在 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:容量: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[配置调优]
深化 19:容量:merge 带宽
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 容量:merge 带宽 在 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:容量:insert QPS 上限
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 容量:insert QPS 上限 在 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:变更审批流程
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 变更审批流程 在 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:staging 压测
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | staging 压测 在 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:文档化基线
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | 文档化基线 在 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:parts_to_delay_insert
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | parts_to_delay_insert 在 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:parts_to_throw_insert
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | parts_to_throw_insert 在 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:merge_max_block_size
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | merge_max_block_size 在 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:max_bytes_to_merge_at_max_space_in_pool
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | max_bytes_to_merge_at_max_space_in_pool 在 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[配置调优]
深化 29:number_of_free_entries_in_pool_to_execute_mutation
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | number_of_free_entries_in_pool_to_execute_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[配置调优]
深化 30:background_pool_size
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | background_pool_size 在 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[配置调优]
深化 31:background_merges_mutations_concurrency
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | background_merges_mutations_concurrency 在 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[配置调优]
深化 32:max_insert_block_size
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | max_insert_block_size 在 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[配置调优]
深化 33:min_insert_block_size_rows
| 检查项 | 说明 | 关联篇章 |
|---|---|---|
| 机制 | min_insert_block_size_rows 在 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[配置调优]
上一篇:经典故障
下一篇:系列索引
参考资料
- ClickHouse Documentation, MergeTree settings, Server settings, 24.x
- ClickHouse Documentation, Storage policies, TTL
- 本系列 第 14、15 篇
同主题继续阅读
把当前热点继续串成多页阅读,而不是停在单篇消费。
【列存引擎内核】物化视图与增量管道
ClickHouse Materialized View 的触发语义、块级增量与目标表引擎选择;Kafka Engine + MV 典型架构;与 PostgreSQL 触发器/MV 的对照及常见坑。
【列存引擎内核】ClickHouse 与 DuckDB 选型决策
从部署形态、规模、并发、联邦与运维成本五维对比 ClickHouse 与 DuckDB;给出决策树与组合架构,不排名不测虚构 benchmark。
【列存引擎内核】经典故障模式
Too many parts、merge 跟不上 insert、mutation 堆积、副本延迟与 lost replica、max_memory_usage OOM 的症状链、根因与缓解;附测试环境复现框架。
【列存引擎内核】DuckDB 架构与嵌入式 OLAP
DuckDB 进程内嵌入式模型、Storage 的 Row Group 与 Column Segment、Catalog 与 checkpoint;与 ClickHouse Server 部署差异及 pg_duckdb 联邦场景边界。