最简单方式理解为什么MongoDB索引选择B-树,而 Mysql 选择B+树
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了最简单方式理解为什么MongoDB索引选择B-树,而 Mysql 选择B+树,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2105字,纯文字阅读大概需要4分钟。
内容图文
![最简单方式理解为什么MongoDB索引选择B-树,而 Mysql 选择B+树](/upload/InfoBanner/zyjiaocheng/521/c3d79040ff084b2bad6ef021b91a0c6e.jpg)
一、B-树和B+树的区别
很明显,我们要想弄清楚原因就要知道B-树和B+树的区别。为了不长篇大论。我们直接给出他们的形式总结他们的特点。
1、B-树
B-树是一种自平衡的搜索树,形式很简单:
![最简单方式理解为什么MongoDB索引选择B-树,而 Mysql 选择B+树 - 文章图片](/upload/getfiles/0001/2021/4/25/20210425121556794.jpg)
这就是一颗B-树。针对我们这个问题的最核心的特点如下:
(1)多路,非二叉树
(2)每个节点既保存索引,又保存数据
(3)搜索时相当于二分查找
在这里我们假定都已经了解了B树相关的结构。
2、B+树
B+树是B-树的变种
![最简单方式理解为什么MongoDB索引选择B-树,而 Mysql 选择B+树 - 文章图片](/upload/getfiles/0001/2021/4/25/20210425121557053.jpg)
最核心的特点如下:
(1)多路非二叉
(2)只有叶子节点保存数据
(3)搜索时相当于二分查找
(4)增加了相邻接点的指向指针。
从上面我们可以看出最核心的区别主要有俩,一个是数据的保存位置,一个是相邻节点的指向。就是这俩造成了MongoDB和Mysql的差别。为什么呢?
3、B-树和B+树的区别
(1)B+树查询时间复杂度固定是logn,B-树查询复杂度最好是 O(1)。
(2)B+树相邻接点的指针可以大大增加区间访问性,可使用在范围查询等,而B-树每个节点 key 和 data 在一起,则无法区间查找。
(3)B+树更适合外部存储,也就是磁盘存储。由于内节点无 data 域,每个节点能索引的范围更大更精确
(4)注意这个区别相当重要,是基于(1)(2)(3)的,B-树每个节点即保存数据又保存索引,所以磁盘IO的次数很少,B+树只有叶子节点保存,磁盘IO多,但是区间访问比较好。
有了他们的区别之后,现在我们再来解释这个原因就好多了。
二、原因解释
想要解释原因,我们还必须要了解一下MongoDB和Mysql的基本概念。
1、MongoDB
MongoDB 是文档型的数据库,是一种 nosql,它使用类 Json 格式保存数据。比如之前我们的表可能有用户表、订单表、购物篮表等等,还要建立他们之间的外键关联关系。但是类Json就不一样了。
![最简单方式理解为什么MongoDB索引选择B-树,而 Mysql 选择B+树 - 文章图片](/upload/getfiles/0001/2021/4/25/20210425121557400.jpg)
我们可以看到这种形式更简单,通俗易懂。那为什么 MongoDB 使用B-树呢?
MongoDB使用B-树,所有节点都有Data域,只要找到指定索引就可以进行访问,无疑单次查询平均快于Mysql。
2、Mysql
Mysql作为一个关系型数据库,数据的关联性是非常强的,区间访问是常见的一种情况,B+树由于数据全部存储在叶子节点,并且通过指针串在一起,这样就很容易的进行区间遍历甚至全部遍历。
这俩区别的核心如果你能看懂B-树和B+树的区别就很容易理解。
最简单方式理解为什么MongoDB索引选择B-树,而 Mysql 选择B+树
标签:外部 文章 amp 订单 https strong 没有 文档 数据库
本文系统来源:https://www.cnblogs.com/matengfei123/p/12459911.html
内容总结
以上是互联网集市为您收集整理的最简单方式理解为什么MongoDB索引选择B-树,而 Mysql 选择B+树全部内容,希望文章能够帮你解决最简单方式理解为什么MongoDB索引选择B-树,而 Mysql 选择B+树所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。