B+树到底是什么?和B树的区别是什么?

385 阅读2分钟

这是我参与8月更文挑战的第9天,活动详情查看:8月更文挑战

B+树是对应数据库所需而出现的一种B树的变形树。

图片

B+ 树是一种树数据结构,是一个n叉树,每个节点通常有多个孩子,一颗B+树包含根节点、内部节点和叶子节点。B+ 树通常用于数据库和操作系统的文件系统中。 B+ 树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。 B+ 树元素自底向上插入。

概念

一棵m阶的B+树需满足下列条件:

  1. 每个分支结点最多有m棵子树

  2. 非叶根节点至少有两棵子树,其他每个分支结点至少有【m/2】棵子树

       结点的子树个数于关键字个数相等

  1. 所有叶结点包含全部关键字及其相应记录的指针,叶结点中将关键字按大小顺序排列,并且相邻叶结点按大小顺序相互链接起来。

  2. 所有分支结点(可视为索引的索引)中仅包含他的各个子节点(即下一级的索引块)中关键字的最大值及指向其子节点的指针。

区别

  • 在B+树中,具有n个关键字的结点只含有n棵子树,即每个关键字对应一棵子树;而在B树中,具有n个关键字的结点含有n+1棵子树。

  • 在B+树中,每个结点(非根内部结点)的关键字个数n的范围是【m/2】<=n<=m(根节点:1<=n<=m);

    在B树中,每个结点(非根叶结点)的关键字个数n的范围是【m/2】-1<=n<=m-1(根节点:1<=n<=m-1)。

  • 在B+树中,叶结点包含信息,所有非叶结点仅起索引作用,非叶节点中的每个索引项只含有对应子树的最大关键字和指向该子树的指针,不含有该关键字对应记录的存储地址。

  • 在B+树中,叶结点包含了全部关键字,即在非叶结点中出现的关键字也会出现在叶结点中;而在B树中,叶结点包含的关键字和其他结点包含的关键字是不重复的。