B 树与 B+ 树:数据库索引为什么这么快
从二叉搜索树讲起,看节点为什么要匹配磁盘页、B 树如何把树高压到极低,以及 RDB 为什么最终选了 B+ 树。叶节点链表让范围查询从反复上下遍历变成顺序读取,末尾还讲了节点分裂算法。
更多 internals
首页从二叉搜索树讲起,看节点为什么要匹配磁盘页、B 树如何把树高压到极低,以及 RDB 为什么最终选了 B+ 树。叶节点链表让范围查询从反复上下遍历变成顺序读取,末尾还讲了节点分裂算法。
单个文件如何做到 ACID。页面与 B+tree 的布局、从回滚日志到 WAL 的演进、控制并发访问的五个锁状态,以及四条把性能拉满的 PRAGMA 设置,开 WAL、降 synchronous、加 cache_size、开 mmap。 设置(

从 IBM 的 ARIES 讲到今天。为什么先写顺序日志再落数据页能挺住断电、checkpoint 与 group commit 各自解决什么、物理 WAL 与逻辑 WAL 的区别,以及两组最常见的误用,长事务不关、关 fsync 换速度。
手工给 Postgres 写一个表访问方法(TAM)的系列第三节。三种共享内存机制怎么选、为什么 DSA 的指针间接让顺序扫描慢 4-5 倍、pin 的是段还是映射、以及 _PG_init 与 shmem_startup_hook 的分工。