B+树的定义
一棵m阶的B+树需满足下列条件:
(1)每个分支节点最多有m棵子树;
(2)非叶根节点至少有两棵子树,其他每个分支节点至少有m/2棵子树;
(3)节点的子树个数与关键字个数相等;
(4)所有叶节点包含包含全部关键字及指向相应记录的指针,而且叶节点中将关键字按大小顺序排列,并且相邻叶节点按大小顺序相互链接起来;
(5)所有分支节点中仅包括它的各个子节点中关键字的最大值及指向其子节点的指针。
B+树的插入
在B+树的插入过程中,由于每个节点的关键字个数有限制,所以会导致插入节点的关键字个数在超过阶数时,该节点会分裂成两个节点,同时为了满足B+树的性质,并会将节点中间的关键字复制一份放到它的父节点中。处理分裂过程是B+树插入过程的关键。
我在学习B+树的过程中,发现了另外一种分裂方式可以大大减少操作,提高性能。
(1)通常B+树的插入过程
我们通常意义上的B+树的插入过程,就是首先通过节点路径上的节点找到插入的目标叶子节点,如果使得叶子节点里的关键字数大于阶数,那么变会分裂,同时上升的关键字可能会导致它的父节点分裂,然后一直往上迭代,直到不能分裂为止,完成插入过程。