B+ tree在数据库中的应用?为什么适合磁盘?B+ tree在数据库中的应用?为什么适合磁盘?
B+ tree 是数据库索引的主流结构:多路平衡、所有 key 在叶子层有序且形成有序链表、非叶节点只存 key 与子指针(不存数据),叶子层存 key 与记录指针或数据。支持范围查询、顺序扫描、高扇出(单节点可存大量 key),适合磁盘块为单位的读写。
磁盘按块读写(如 4KB),随机 IO 贵。B+ tree 节点大小设计成块大小,一次 IO 读入一节点;高扇出(阶大)使树矮,查找次数 = 树高,通常 3~4 层即可覆盖海量数据,即 3~4 次磁盘访问。叶子链表使范围查询与全表顺序扫描只需沿叶子链,顺序 IO 友好。平衡保证任意 key 的查找路径等长,性能稳定。
B+ 非叶节点不存数据、只做索引;叶子层含全部 key 且链表串联。B tree 的 key 与数据可在非叶节点出现。B+ 范围查询与顺序扫描更优,数据库多用 B+。
| 返回模块 | 返回总览 |