知其然,知其所以然
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 真实验证 动画演示
ClickHouse 内部原理 2026-09-25

Query Pipeline:查询如何拆成多个处理器

用 EXPLAIN PIPELINE 加真实改 max_threads,看同一条聚合查询的处理器流水线真实是怎么随线程数从1条变成8条并行分支的,以及并行分支多了之后耗时的真实变化。

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

Block:ClickHouse 为什么不逐行传递数据

用 clickhouse-client 的 Native 格式真实导出一份原始字节流,逐字节解码出 ClickHouse 内部真正传递的最小单位——Block:一份列名、一份类型、然后每一列的值各自连续排列在一起。

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

MergeTree 家族到底解决了什么

真实往 MergeTree、ReplacingMergeTree、SummingMergeTree 里写入同样的重复数据,对比 OPTIMIZE FINAL 前后的真实结果,再验证 SELECT ... FINAL 和物理合并的真实区别。

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

ORDER BY、Primary Key 和 Partition Key 的区别

真实建一张30万行、按月分区、按region+uid排序的表,用三种不同的WHERE条件真实对比read_rows,看ORDER BY前缀过滤、非索引列过滤、分区裁剪这三种情况真实读了多少数据。

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

Sparse Primary Index:ClickHouse 为什么索引不是每行一个

真实建两张200万行的表,一张用默认的index_granularity=8192,一张调到128,用真实的marks_bytes和point query的read_rows,看稀疏索引到底稀疏在哪、代价换来了什么。

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

Data Part:一次 INSERT 到底生成了什么文件

真实执行一次INSERT,直接ls磁盘上生成的part目录,逐个文件看清楚checksums.txt、columns.txt、count.txt都装了什么,再对比Compact和Wide两种part格式真实的文件差异。

ClickHouse 真实验证 动画演示
MySQL / InnoDB 2026-09-25

聚簇主键和二级索引:InnoDB 到底先查哪棵树

本机真实起一个 MySQL 26.7 单节点,用 EXPLAIN FORMAT=TREE 真实验证二级索引的叶子节点里存的到底是什么——查主键列不用回表,查其它列才需要回表。

MySQL 真实验证 动画演示
MySQL / InnoDB 2026-09-25

联合索引的最左匹配:为什么只查第二列会失效

本机真实建一张10万行的表,联合索引idx(a,b,c),用EXPLAIN真实对比只过滤b、只过滤a、过滤a+b、过滤a+b+c这四种情况,看索引真实是怎么按前缀一段段生效的。

MySQL 真实验证 动画演示
MySQL / InnoDB 2026-09-25

覆盖索引:为什么查询可以不回表

本机真实用EXPLAIN ANALYZE对比约2万行范围查询在覆盖索引和非覆盖索引下的真实耗时,2ms vs 11毫秒级,看回表这一步真实要多付出多少代价。

MySQL 真实验证 动画演示
MySQL / InnoDB 2026-09-25

选择性与索引扫描:优化器如何决定走不走索引

本机真实建一张20万行、95%对5%严重倾斜的表,真实对比强制走索引和强制全表扫描的耗时,意外发现MySQL优化器的默认选择对低选择性列反而选错了。

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