七万号·数据平台实战手记

Back

① 标题党#

主标题同样是数据库,DuckDB 凭什么敢说自己"快得离谱"? 备选A一个进程内的小库,跑分析为什么比得上大集群? 备选B(短视频)DuckDB:卷,是一种美德

② 开场钩子(30 秒)#

都说大数据要上 Spark、要上集群才够快。可我做 DuckDB 这些年,发现一个十几 MB 的库,单机就敢跟集群掰手腕。它凭什么?秘密就在它怎么”摆数据、怎么算数”。

③ 主角特性:列式存储 + 向量化执行#

  • 列式存储:数据一列一列排,算 sum/avg/count 只碰需要的列,无关列一个不动。分析型查询天然切中列存。
  • 向量化执行:DuckDB 不是一行一行算,而是一次算一整个 block(一批行),把 CPU 的 SIMD 指令用到极致,吞吐量大几个量级。

反常识:行式 OLTP 库(MySQL/PostgreSQL)做分析慢,不是它笨,是”摆数据的方式”根本不对。DuckDB 从设计第一天就为分析而活。

④ 最小可复现#

-- 100 万行,SELECT 只碰一列 —— 列存下几乎不读别的
CREATE TABLE t (id BIGINT, a BIGINT, b BIGINT, ...);
INSERT INTO t SELECT i, i*2, i*3 FROM range(1000000) t(i);

-- 向量化算 sum,单机毫秒级
SELECT sum(a), avg(b) FROM t;
sql

⑤ 结论#

列存决定了”读多少”,向量化决定了”算多快”。DuckDB 把这两件事从设计第一天就做对了,所以它敢拿单机挑战集群。

⑥ 配图脚本#

行式 vs 列式对比 / SIMD 批量处理示意 / 单机 vs 集群比拼 / 结论卡


列存 + 向量化:DuckDB 凭什么'卷'别人
https://realcpf.tech/blog/duckdb-01
Author 刘佳成
Published at 2026年9月3日