- 每一个节点可有多个分叉
- 所有底层节点的深度完全一致
- B树矮宽
一. 多路平衡
1. B树的设计者将其定义为一种平衡的多路(multi-way)搜索树
两层两层去考察节点,每一个节点及它的左右孩子合成一个超级节点。
二. 还是I/O
- 多级存储系统中使用B-树,可针对外部查找,大大减少I/O次数
- 若有n=1G个记录,每次查找需要log(2,2^30)=30次I/O操作,每次只读出一个关键码,得不偿失。若将它们组织为一棵AVL树,高度大致为30层。最坏情况下,单次查找需要深入30层,每一层都需执行一次IO操作。
- B树会充分利用外存对批量访问的高效支持,将此特点转化为优点。每下降一层,都以超级节点为单位,读入一组关键码。
(一节车厢装载若干粉笔)
-------------------------------------------------------------------------------------
这节车厢要设计成多大?
视磁盘的数据块大小而定,m=#keys/pg。目前多数数据库系统采用m=200~300
回到上例,若取m=256=2^8,则每次查找只需log(2^8,2^30)=4次I/O操作。
三. 深度统一
四. 阶次含义
其给出了每个超级节点规模的上限,同时也给出了下限。
m=5时(5阶B树),每个节点的分支数不得超过5,同时一般节点所拥有的分支数也不得少于3,可称之为(3,5)树。
(节点分支总数超过B的阶次m,称作上溢overflow)
五. 紧凑表示
对B树的画法做紧凑处理。(注意:图c只是省略了外部节点,不代表没有)