知其然,知其所以然
ClickHouse 内部原理 2026-09-28

WITH、子查询和 CTE 会不会真的只执行一次

本机真实用sleepEachRow验证子查询执行次数,发现WITH和手写重复子查询耗时几乎相同,真相是公共子表达式消除只认文本是否完全相同,与WITH语法本身无关。

ClickHouse MergeTree 真实验证 动画演示
ClickHouse 内部原理 2026-09-28

物化视图为什么能加速查询

本机真实验证物化视图对创建前历史数据完全不自动回填,并说明它真实的加速原理是把计算提前分摊到写入时,减少查询要读取的数据量。

ClickHouse MergeTree 真实验证 动画演示
ClickHouse 内部原理 2026-09-28

Projection:一张表为什么可以准备多种排序方式

本机真实给按k排序的2000万行表加一个按cat排序的Projection,验证同样的过滤查询read_rows从2000万降到4.9万,降约407倍,且对业务SQL完全透明。

ClickHouse MergeTree 真实验证 动画演示
ClickHouse 内部原理 2026-09-28

Date、Date32、DateTime 和 DateTime64

本机真实测试Date类型的边界,发现超出1970~2149范围的日期不报错而是静默钳制到边界值,并说明四种日期时间类型2~8字节的存储成本与范围/精度取舍。

ClickHouse MergeTree 真实验证 动画演示
ClickHouse 内部原理 2026-09-28

Nullable:为什么 Nullable 会影响性能

本机真实对比Nullable列和普通列的物理磁盘文件,纠正存储膨胀的常见误解——额外代价不到0.1%,真实的性能影响在于每次访问都要多一次null-mask判断。

ClickHouse MergeTree 真实验证 动画演示
ClickHouse 内部原理 2026-09-28

Array、Tuple、Map 的底层存储

本机真实用columns_substreams.txt精确核对Array/Tuple/Map三种复合类型在磁盘上的物理拆分,4个逻辑列真实对应10个物理文件,Map真实被当成Array(Tuple)处理。

ClickHouse MergeTree 真实验证 动画演示
ClickHouse 内部原理 2026-09-28

Nested:ClickHouse 如何表示嵌套数据

本机真实对比Nested类型和3个独立Array列,发现Nested的子列真实共享同一个长度文件,从存储层面提供了独立Array做不到的逐行等长保证。

ClickHouse MergeTree 真实验证 动画演示
ClickHouse 内部原理 2026-09-28

JSON 类型和 JSONExtract 函数

本机真实插入两条结构不同的JSON文档到原生JSON类型列,用columns_substreams.txt揭示1个JSON列、2行数据就真实产生了47个物理文件的惊人复杂度。

ClickHouse MergeTree 真实验证 动画演示
ClickHouse 内部原理 2026-09-25

ClickHouse 为什么适合 OLAP,不适合高频单行更新

本机真实起一个 ClickHouse 26.9 单节点:200 次单行 INSERT 真实耗时 23.6 秒且产生大量 part,同样 200 行一次批量 INSERT 只要 0.14 秒;再用 ALTER TABLE UPDATE 验证一次更新真实是怎样的异步 mutation。

ClickHouse 真实验证 动画演示
ClickHouse 内部原理 2026-09-25

行式存储和列式存储到底差在哪里

本机真实建一张 50 列的宽表,只查 1 列 vs 查全部 50 列,用 system.query_log 里真实的 read_bytes 数字看列存到底省在哪,以及为什么 length() 比 SELECT * 读得更少。

ClickHouse 真实验证 动画演示
ClickHouse 内部原理 2026-09-25

ClickHouse 一条查询是怎么执行的

用 EXPLAIN AST / EXPLAIN PLAN / EXPLAIN PIPELINE 加 system.query_log,真实拆开同一条 SQL 从解析、生成执行计划、拼成处理器流水线到真正执行的每一步。

ClickHouse 真实验证 动画演示
ClickHouse 内部原理 2026-09-25

Vectorized Execution:为什么 ClickHouse 一批一批处理数据

在本机 2000 万行的真实表上,把 max_block_size 从 1 调到默认的 65505,同一条聚合查询真实耗时从 32.8 秒降到 0.09 秒,361 倍的差距全部来自一行一行处理还是一批一批处理。

ClickHouse 真实验证 动画演示
京ICP备2026067502号-1京公网安备11010502063487号