B树和B+树
B树 一、 基本原理 B树是一种查找树,它最初启发于二叉查找树。 二叉查找树的特点是每个非叶节点都只有两个孩子节点。然而这种做法会导致当数据量非常大时,二叉查找树的深度过深,搜索算法自根节点向下搜索时,需要访问的节点也就变的相当多。 如果这些节点存储在外存储器中,每访问一个节点,相当于就是进行了一次I/O操作,随着树高度的增加,频繁的I/O操作一定会降低查询的效率。 磁盘读取信息: 找到存储这个数据所对应的磁盘页面,这个过程是机械化的过程,需要依靠磁臂的转动,找到对应磁道,所以耗时长。 读取数据进内存,并实施运算,这是电子化的过程,相当快。 对于外存储器的信息读取最大的时间消耗在于寻找磁盘页面。那么一个基本的想法就是能不能减少这种读取的次数,在一个磁盘页面上,多存储一些索引信息。 B树的基本逻辑就是这个思路,它要改二叉为多叉,每个节点存储更多的指针信息,以降低I/O操作数。 二、基本结构 1. B树的定义 这里用最小度 t 来定义B树。一棵最小度为 t 的B树是满足如下四个条件的平衡多叉树: 每个节点最多包含 2 t − 1 个关键字;除根节点外的每个节点至少有 t − 1 个关键字( t ≤ 2 ),根节点至少有一个关键字; 一个节点 u 中的关键字按非降序排列: u . k e y 1 ≤ u . k e y 2 ≤ … u . k e y n ;