B-tree 是一种自平衡搜索树,其中每个节点持有很多键并且有很多子节点(高 fanout)。这样可以保持树的深度较浅,最小化磁盘读取的次数——这正是数据库和文件系统所需要的。
为什么高 fanout 胜过二叉树
text
Binary BST over 1,000,000 keys -> height ~20 (20 disk seeks)
B-tree, 100 keys/node -> height ~3 (3 disk seeks)
Each node = one disk block/page read.
结构(B-tree 阶数 4)
text
[ 17 | 35 ]
/ | \
[4|9|12] [20|28] [40|50|60]
each node packs many keys -> few levels
