B B+ 树

作者: 唐騦忆 | 来源:发表于2020-02-27 17:33 被阅读0次

1. B树

B树也称B-树,它是一颗多路平衡查找树。我们描述一颗B树时需要指定它的阶数,阶数表示了一个结点最多有多少个孩子结点,一般用字母m表示阶数。当m取2时,就是我们常见的二叉搜索树。

一颗m阶的B树定义如下:

  1. 每个结点最多有m-1个关键字。
  2. 根结点最少可以只有1个关键字。
  3. 非根结点至少有Math.ceil(m/2)-1个关键字。
  4. 每个结点中的关键字都按照从小到大的顺序排列,每个关键字的左子树中的所有关键字都小于它,而右子树中的所有关键字都大于它。
  5. 所有叶子结点都位于同一层,或者说根结点到每个叶子结点的长度都相同。


    B树

1. B+树简介

B+树针对磁盘寻址慢的特点对二叉树做优化,将原本高瘦的树做矮胖处理,减少磁盘寻址次数,避免数据库在索引查询过程中查询次数过多而花费大量时间。B+树自顶向下查询,自底向上插入。

m阶B+树具有如下特点:

  1. 根节点至少有两个子女;
  2. 每个中间节点至少包含 ceil / (m/2) 个孩子,最多有m个孩子;
  3. 每一个叶子节点都包含k-1个元素,其中m/2 <= k <= m;
  4. 所有叶子节点都位于同一层;
  5. 每个叶子节点的元素从小到大排序,节点中k-1个元素正好是k个孩子包含的元素的值域划分;
  6. 每一个父节点都出现在子节点中,是子节点最大或最小的元素;
  7. 每一个叶子节点都有一个指针,指向下一个数据,形成有序链表;
B+树

2. B+树与B树区别

  1. 有k个子结点的结点必然有k个关键码;
  2. 非叶结点仅具有索引作用,跟记录有关的信息均存放在叶结点中。
  3. 树的所有叶结点构成一个有序链表,可以按照关键码排序的次序遍历全部记录。

B+树中间节点没有Data数据,所以同样大小的磁盘页可以容纳更多的节点元素。所以数据量相同的情况下,B+树比B树更加“矮胖“,因此使用的IO查询次数更少。B树的查找并不稳定(最好的情况是查询根节点,最坏查询叶子节点)。而B树每一次查找都是稳定的。

3. B+树查询

第一次
第二次
第三次

4. B+树插入

相关文章

  • B+树

    B+树概况 InnoDB使用了B+树索引模型 每个索引在InnoDB里面对应一棵B+树 B+树特点 m阶B+树每个...

  • 聊一聊B+树

    标签: 图解B+树 | B+树代码|mysql 聚集索引|mysql B+树索引| 前言   虽然B+是B-演化过...

  • B树、B+树、B*树

    1)什么是B树、B+树、B树?2)B树、B+树、B树的作用?3)B树、B+树、B*树的应用场景? 一、什么是B树、...

  • mysql 浅析

    索引的结构 B+树 二叉查找树、平衡二叉树 、B树、 B+树 B树: B+树: B+树中各个页之间是通过双向链表连...

  • MySQL B+树介绍

    MySQL B+树介绍 B+树的演变 二叉树 --> 二叉查找树 --> 平衡二叉树 --> B树 --> B+树...

  • B树B-树和B+树的总结

    参考:B树和B+树的总结B树、B-树、B+树、B*树都是什么 总结 利用平衡树的优势加快查询的稳定性和速度;B+树...

  • 树-二叉搜索树-平衡二叉树-红黑树-B树B+树

    关于树的总结从二叉树->二叉搜索树->平衡二叉树->红黑树->B树与B+树 B+树介绍 B树、B-树、B+树、B*...

  • MYSQL的索引与B+Tree

    MySQL 索引与 B+ 树 B+ 树 MySQL Innodb 存储引擎是使用 B+ 树来组织索引的。在介绍 B...

  • 存储和索引

    1、inner DB B+树 vs B树B+树只在叶子节点存储数据,B树的所有节点都存储数据;因此B+树在索引阶段...

  • MySQL索引的底层数据结构

    前言 一、索引类型 B+树 为什么是B+树而不是B树? 首先看看B树和B+树在结构上的区别 可以看到: B树在每个...

网友评论

      本文标题:B B+ 树

      本文链接:https://www.haomeiwen.com/subject/awyoictx.html