学习索引:RMI、PGM-index、ALEX 与调优 B+tree 的真实差距
把有序数组查找看成拟合 CDF:梳理 RMI 到 PGM-index、ALEX、LIPP 的谱系,用可复现程序在四种分布上比较比较次数、缓存行与索引大小,并对照 SOSD、GRE 基准:学习索引在只读、易拟合数据上领先,写密集、难分布与并发下优势收窄。
Linux 内核、存储与网络、可观测性、系统架构与大模型基础设施的工程笔记:机制拆解、踩坑复盘与可核对证据,少空谈。
共 7 篇文章 · 返回首页
把有序数组查找看成拟合 CDF:梳理 RMI 到 PGM-index、ALEX、LIPP 的谱系,用可复现程序在四种分布上比较比较次数、缓存行与索引大小,并对照 SOSD、GRE 基准:学习索引在只读、易拟合数据上领先,写密集、难分布与并发下优势收窄。
从 Bayer-McCreight 1972 推导树高与分裂摊还代价,用计数模拟器和 bbolt v1.5.0 实测:随机插入页填充约 69%,按键序插入由分裂点决定是 50% 还是近 100%;再对照 bbolt、PostgreSQL、SQLite 源码看删除、写时复制与 B-link 并发。
从 Linux v6.6 的 ext4 extent/HTree、btrfs CoW B-tree 与 XFS B+tree 源码出发,用确定性模拟量化 extent 元数据和 CoW 路径复制的写放大。
钉住 SQLite table b-tree 与 index b-tree 的字节布局差异、cell pointer array 如何做到逻辑有序物理可乱序、overflow 阈值与 balance() 分裂/合并触发条件;源码以 btree.c 函数签名为准,学术锚点是 Bayer & McCreight 1972。
从 Kraska 2018 RMI 到 ALEX、PGM-Index、RadixSpline,系统梳理学习型索引的数学骨架、更新代价与落地边界,并给出一个最小 RMI 的 Python 实现
MVCC 靠什么实现?持久化 B-tree、COW、append-only log。从 CouchDB 到 LMDB 到 DuckDB,三种不同的路径,同一个目标:读不阻塞写。
拆解 SQLite 的三层性能引擎:B-Tree 页面布局如何把随机 I/O 压到最低、WAL 如何实现读写并发、Page Cache 如何替代操作系统的盲目预读。附 SQLite vs MySQL vs PostgreSQL 嵌入式场景对比分析。