【MySQL】B树和B+树的区别
1、B树
- 这里的 B 是 Balance(平衡)的缩写。它是一种多路的平衡搜索树。
- 它跟普通的平衡二叉树的不同是,B树的每个节点可以存储多个数据,而且每个节点不止有两个子节点,最多可以有上千个子节点。
- B树中每个节点都存放着索引和数据,数据遍布整个树结构,搜索可能在非叶子节点结束,最好的情况是O(1)。
- 一般一棵 B 树的高度在 3 层左右,3 层就可满足百万级别的数据量
B树 每个节点都存储了一定的范围区间,区间更多的情况下,搜索也就更快。
比如普通的二叉树对于1~100的索引值,首先分为1~50和51~100两部分。
而B树可以分为四个区间 1~25,26~50,51~75,76~100。甚至可以划分为更多区间,这样一次就能排除四分之三的数据
2、B+树
B+树是B树的一种变种,它与 B树 的 区别 是:
- 叶子节点保存了完整的索引和数据,而非叶子节点只保存索引值,因此它的查询时间固定为 log(n).
- 叶子节点中有指向下一个叶子节点的指针,叶子节点类似于一个单链表
- 正因为叶子节点保存了完整的数据以及有指针作为连接,B+树可以增加了区间访问性,提高了范围查询,而B树的范围查询相对较差
- B+树更适合外部存储。因为它的非叶子节点不存储数据,只保存索引。
- InnerDB使用的正是这种当做索引
B+树的示意图如下:
参考:https://blog.csdn.net/a519640026/article/details/106940115/
[ 版权声明 ]:
本文所有权归作者本人,文中参考的部分已经做了标记!
商业用途转载请联系作者授权!
非商业用途转载,请标明本文链接及出处!