返回 ELI5 知识库首页 ⚡ REAL-TIME OLAP & COLUMN-ORIENTED DB
Column-Oriented DBMS · SIMD Vectorization · Real-time Analytics

什么是 ClickHouse(狂暴列式数据库)?

传统 MySQL 就像一本按行装订的厚通讯录,想统计全公司平均年龄得把每个人从头到尾翻一遍;而 ClickHouse 则是把每一列单独抽出来的分类拉链袋 —— 配合狂暴的 SIMD 向量化计算,百亿级日志聚合查询 1 秒出结果

📑 行式存储 (MySQL / PostgreSQL: OLTP)

按行打包,查单个用户极快

每个用户的 ID、姓名、年龄、住址紧挨着存放在一块磁盘扇区上。适合银行转账、电商下单等单行增删改查(OLTP);但统计万亿级分析报表时,磁盘 I/O 瞬间爆掉!

[Row 1] ID:1 | 张三 | 年龄:25 | 详细地址... [Row 2] ID:2 | 李四 | 年龄:38 | 详细地址... [Row 3] ID:3 | 王五 | 年龄:29 | 详细地址... ⚠️ 算 AVG(年龄) 必须把整行无用字段全部读入内存
  • 🔹 高频事务友好:插入/修改整行数据只需写一次磁盘
  • 分析聚合极慢:扫描无用字段占用海量磁盘带宽与内存
VS
⚡ 列式存储 (ClickHouse: OLAP)

按列独立归档,只读必要字段

所有用户的“年龄”排成一列连续存放。算平均年龄时只读“年龄”这一列,结合同类型数据超高压缩比与 CPU SIMD 向量化指令,吞吐狂飙数千倍!

列: ID 1 2 3 列: 姓名 张三 李四 王五 列: 年龄 🔥 25 38 29 ✨ 0 冗余扫描 · 百亿数据压缩后秒级聚合!
  • I/O 消耗骤降 90%:只扫描 SQL 查询里指定的具体列
  • 超高压缩比(10:1):同列数据类型完全相同(如全是数字),压缩率惊人
💡

一句话顿悟:为什么 ClickHouse 速度能快到颠覆常识?

ClickHouse 的核心哲学就是“把硬件利用到骨髓”: ① 列存消灭无效 I/O;② LZ4/ZSTD 极致压缩;③ SIMD 向量化执行(一条 CPU 指令并发计算 8 个数字);④ MergeTree 磁盘分块排序! 因此即使在单台廉价服务器上,它也能跑出每秒数十亿行数据的聚合速度!

拆解 ClickHouse 狂暴性能的 4 大核心引擎

从 MergeTree 表引擎到 SIMD 向量化吞吐,读懂现代实时数仓底座

🌲

1. MergeTree 核心表引擎

数据写入先以临时分片落盘,后台异步执行归并排序(Merge),搭配稀疏索引(Sparse Index),百亿级点查定位极快。

2. SIMD 向量化执行引擎

摒弃传统数据库一条一条循环迭代的做法,利用现代 CPU 的 AVX-512 指令集,一个时钟周期批量处理一组数据块(Block)。

🗜️

3. 极致数据压缩算法

根据列类型自动匹配编码:Gorilla 压缩浮点数、DoubleDelta 压缩时间戳、T64 压缩整型,磁盘占用减少 80%~90%

📊

4. 实时大规模日志与 OLAP

天然支持实时写入与流式摄取。广泛作为微服务链路追踪(Tracing)、用户行为埋点看板与大模型监控底座。

🕹️ 行存 vs 列存 SQL 查询扫描演练台

执行 SELECT AVG(age) FROM users,对比两种架构需要从磁盘载入哪些数据:

ID
姓名
年龄
1001
Alice
24
1002
Bob
31
1003
Charlie
29
⚡ ClickHouse 列存极速扫描
只读取磁盘上的 [年龄] 物理单列文件
ID 和 姓名 字段完全不产生任何磁盘 I/O 读入开销,直接将 3 个年龄数字送入 CPU 寄存器做 SIMD 向量化相加!
磁盘 I/O 节省率: 66.7% 零冗余传输
🇷🇺 战斗民族神作

诞生自 Yandex 流量统计

ClickHouse 原本由俄罗斯最大搜索引擎 Yandex 开发,用于支撑其类似 Google Analytics 的全球第二大流量监控系统 Yandex.Metrica

在每日万亿级用户点击事件的严酷考验下千锤百炼,于 2016 年开源后风靡全球。

⚠️ 适用边界

ClickHouse 不适合做什么?

ClickHouse 不是万能的:它不擅长高并发单行点查与频繁 UPDATE/DELETE 事务(每次修改都会触发后台分区合并重写)。

它的最强杀手锏是“大批量追加写入(Append-only)+ 复杂海量数据实时聚合分析”

🌐 现代架构搭档

MySQL + ClickHouse 双剑合璧

在现代互联网架构中,业界标配是:前台业务由 MySQL / PostgreSQL 负责稳定处理用户下单与账户更新;

通过 CDC(如 Flink / Debezium)将数据实时同步至 ClickHouse,驱动实时大屏、风控与数仓分析。