真的 Postgres,不是模拟
页面里跑的是 PGlite —— 把 PostgreSQL 18 编译成 WebAssembly,3MB。不是 SQL 解析器玩具,也不是远程沙箱,是完整的 Postgres 后端。
Postgres 官方文档是参考手册,它假设你已经知道要找什么。这本书反过来:先给现象,再给机制,每个机制都配一段能改、能跑、能看到结果的 SQL。
真的 Postgres,不是模拟
页面里跑的是 PGlite —— 把 PostgreSQL 18 编译成 WebAssembly,3MB。不是 SQL 解析器玩具,也不是远程沙箱,是完整的 Postgres 后端。
能看到别处看不到的东西
pageinspect、pg_visibility、pg_buffercache 全部可用。你可以亲手 dump 一个堆页面,看 UPDATE 之后旧版本还躺在哪里。
顺序是有意设计的
MVCC 排在索引之前。不先理解元组版本和可见性映射,Index-Only Scan 与表膨胀就只能死记。
全书共享一个数据集
一个订单系统贯穿六个阶段。同一张 orders 表,你会在不同章节看到它截然不同的侧面。
| 阶段 | 主题 | 你将能回答 |
|---|---|---|
| 一 | SQL 表达力 | 窗口函数、LATERAL、递归 CTE 各自不可替代在哪 |
| 二 | 类型与建模 | 什么时候该用 jsonb 而不是拆表 |
| 三 | MVCC | 一个只读长事务为什么会让别的表膨胀 |
| 四 | 索引与执行计划 | 优化器为什么放着你的索引不用 |
| 五 | 并发与锁 | PG 的 Repeatable Read 和 SQL 标准差在哪 |
| 六 | 存储、WAL 与调优 | shared_buffers 为什么不能设成内存的一大半 |