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

【列存引擎内核】ClickHouse 与 DuckDB 源码级拆解

文章导航

分类入口
databasestorage
标签入口
#clickhouse#duckdb#columnar#mergetree#olap#vectorized-execution#compression#distributed-table

目录

列存引擎内核:ClickHouse 与 DuckDB 源码级拆解

读者理解 PostgreSQL 行存 OLTPLSM 写优化引擎 之后,仍缺 读优化列存 的完整内核拆解。ClickHouse 是开源列存工程标杆;DuckDB 代表嵌入式分析路径——两者对照覆盖 OLAP 主战场。

本系列不写 SQL 教程,写:

系列状态:已完成(2026-06-18)。16 篇全部可读。

版本锚定:ClickHouse 24.x LTS;DuckDB 1.x。源码引用标注 release tag。

适合谁看

推荐阅读路径

路径 篇目 适合
OLAP 开发者 1 → 2 → 4 → 5 → 7 理解读写
平台/运维 1 → 6 → 8 → 14 → 15 → 16 集群稳定
嵌入式分析 11 → 12 → 13 DuckDB
从 PG 来 1 → 7 → 5 + PG B-Tree 索引语义差异
完整通读 1 → … → 16 系统掌握

一、六个关键问题

  1. 列存文件在磁盘上长什么样? → 第 1、2 章
  2. 一次 SELECT 如何从 part 读到向量批? → 第 3、4、5 章
  3. MergeTree 的 merge 到底在合并什么? → 第 6 章
  4. ClickHouse 的「索引」是什么? → 第 7 章
  5. 分布式表如何工作? → 第 8、9 章
  6. 列存生产环境会出什么事故? → 第 14–16 章

二、篇目依赖

flowchart TD
  A["01 列存基础"] --> B["02 Part 格式"]
  B --> C["03 压缩与编码"]
  C --> D["04 向量化执行"]
  D --> E["05 查询读取路径"]
  B --> F["06 Merge 与 Mutation"]
  F --> G["07 索引与跳数索引"]
  G --> H["08 ReplicatedMergeTree"]
  H --> I["09 Distributed"]
  I --> J["10 物化视图"]
  D --> K["11 DuckDB 架构"]
  K --> L["12 DuckDB Pipeline"]
  L --> M["13 选型对照"]
  M --> N["14 监控"]
  N --> O["15 故障"]
  O --> P["16 配置陷阱"]

三、目录(全 16 篇)

第一部分:存储格式(第 1–3 篇)

  1. 列存基础与 ClickHouse 架构 — 行存/列存三角、进程模型、MergeTree 家族。
  2. MergeTree Part 文件格式.bin/.mrk/Granule、clickhouse-local 实验。
  3. 压缩与编码 — LZ4/ZSTD/Delta/Gorilla 与压缩比方法。

第二部分:读取与合并(第 4–7 篇)

  1. 向量化执行引擎 — Block、Processors;对照 PG 执行器
  2. 查询读取路径 — Mark Range、PREWHERE、EXPLAIN indexes=1
  3. Merge 与 Mutation — 后台 merge、Replacing/Collapsing、mutation 危害。
  4. 索引与跳数索引 — 稀疏主键、minmax/set/bloom。

第三部分:分布式与管道(第 8–10 篇)

  1. ReplicatedMergeTree — Keeper 协调、副本 lag。
  2. Distributed 引擎 — 分片键、GLOBAL IN/JOIN 代价。
  3. 物化视图与增量管道 — Kafka/S3Queue + MV、目标引擎选型。

第四部分:DuckDB 对照(第 11–13 篇)

  1. DuckDB 架构与嵌入式 OLAP — Row Group、进程内分析。
  2. DuckDB 向量化与 Pipeline — Morsel-driven 并行。
  3. ClickHouse vs DuckDB 选型 — 决策树,不排名。

第五部分:运维实战(第 14–16 篇)

  1. 监控与系统表system.partssystem.merges、关键指标。
  2. 经典故障模式 — too many parts、merge 延迟、OOM。
  3. 配置陷阱与容量规划 — parts 阈值、merge 池、磁盘策略。

四、系列联动

系列 联动
postgresql-kernel 执行器、B-Tree、监控
db/lsm-tree Compaction vs Merge
storage 压缩、块设备
observability 日志/trace 写入 ClickHouse

五、边界

不替代 ClickHouse/DuckDB 官方文档;不写 Cloud 托管内部实现;benchmark 须自测或标注引用来源。

系列 index v2,2026-06-18 — 全 16 篇已发布

同主题继续阅读

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

2026-06-18 · database / storage

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

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

2026-06-18 · database / storage

【列存引擎内核】MergeTree Part 文件格式

ClickHouse MergeTree Part 目录结构:columns.txt、checksums.txt、.bin、.mrk2、primary.idx 语义,Granule 与 Mark 的定位作用,Wide/Compact 布局与 MergeTreeDataPart 源码入口。版本锚定 24.x LTS。

2026-06-18 · database / storage

【列存引擎内核】压缩与编码

ClickHouse 列压缩:LZ4、ZSTD、Delta、DoubleDelta、Gorilla 时序编码与列类型关系;CODEC 链顺序、LowCardinality 与 PG TOAST 对照。压缩比须本机实测,本文不编造倍数。

2026-06-18 · database / storage

【列存引擎内核】向量化执行引擎

ClickHouse Block 列向量 batch、IProcessor Pipeline 与 filter/project/aggregate 向量实现;对照 PostgreSQL 火山模型 ExecProcNode。源码入口 src/Processors、src/Columns。24.x LTS。


By .