-rw-r-----2026-08-12—2 min836 words
Postgres 索引原理:B+树、TOAST 与真实优化案例
数据库是付费博客最合适的专栏题材——它既需要理论功底,又极度依赖实战经验。这是「数据库内功」系列第一篇,从存储页结构讲起,最终落到一次真实的慢查询优化。
一切从 8KB 的页开始
Postgres 的最小 I/O 单位是 8KB 的 page。表、索引、TOAST 表都由页构成:
PageHeader (24B)
├── LinePointer 数组(行指针,从后往前增长?不,从前往后)
├── 空闲空间
└── 元组数据(从页尾向前增长)
每行的可见性信息(xmin/xmax)就存在元组头的 HeapTupleHeader 里,这是 MVCC 的物理基础——更新不是原地覆盖,而是写入新元组版本。
评论
# 评论系统未配置:部署 Waline 后设置 NUXT_PUBLIC_WALINE_SERVER_URL 即可启用