B+树的组织结构
1、B+树索引的总体结构 ① B+树索引是一个多级索引,但是其结构不同于多级顺序索引; ② B+树索引采用平衡树结构,即每个叶结点到根的路径长度都相同; ③ 每个非叶结点有 ④ B+树的所有结点结构都相同,它最多包含n-1个搜索码值K1、K2、…、Kn-1,以及n个指针P1、P2、…、Pn,每个结点中的搜索码值按次序存放,即如果i<j,那么Ki<Kj,如图8-3-1所示 |
图8-3-1:B+树的结点结构 |
2、B+树索引的叶结点 ① 指针Pi(i=1,2,…,n-1)指向具有搜索码值Ki的一个文件记录或一个指针(存储)桶,桶中的每个指针指向具有搜索码值Ki的一个文件记录。指针桶只在文件不按搜索码顺序物理存储时才使用。指针Pn具有特殊的作用; ② 每个叶结点最多可有n-1个搜索码值,最少也要有 ③ 由于各叶结点按照所含的搜索码值有一个线性顺序,所以就可以利用各个叶结点的指针Pn将叶结点按搜索码顺序链接在一起。这种排序能够高效地对文件进行顺序处理,而B+树索引的其他结构能够高效地对文件进行随机处理,如图8-3-2所示。 |
图8-3-2:B+树索引的叶结点结构示例 |
3、B+树索引的非叶结点 ① B+树索引的非叶结点形成叶结点上的一个多级(稀疏)索引; ② 非叶结点的结构和叶结点的结构相同,即含有能够存储n-1个搜索码值和n个指针的存储单元的数据结构。只不过非叶结点中的所有指针都指向树中的结点; ③ 如果一个非叶结点有m个指针,则 |
图8-3-3:B+树索引的非叶结点结构 |
④ 在一个含有m个指针的非叶结点中,指针Pi(i=2,…,m-1)指向一棵子树,该子树的所有结点的搜索码值大于等于Ki-1而小于Ki。指针Pm指向子树中所含搜索码值大于等于Km-1的那一部分,而指针P1指向子树中所含搜索码值小于K1的那一部分,如图8-3-4所示。 |
图8-3-4:B+树索引的非叶结点中指针Pi的指向 |
4、B+树索引的根结点 ① 根结点的结构也与叶结点相同; ② 根结点包含的指针数可以小于 |
图8-3-5:account关系的B+树索引结构 |