数据结构:内存操作红黑树快,磁盘操作B树或者B+树快

B+树的高度要比红黑树小,有效减少了磁盘的随机访问;
B+树的数据节点相互临近,能够发挥磁盘顺序读取的优势(缓存);
B+树的数据全部存于叶子结点,而其他节点产生的浪费在经济负担上能够接受,红黑树存储浪费小;

 

红黑树常用于存储内存中的有序数据,增删很快B+树常用于文件系统和数据库索引。

红黑树只能有2个子节点;

B树子节点大于2,子节点树多这一特点保证了存储相同大小的数据,树的高度更小,数据局部更加紧凑,而硬盘读取有局部加载的优化(把要读取数据和周围的数据一起预先读取),b树相邻数据物理上更加紧凑这一特点符合硬盘进行IO优化的特性。

B+树在b树基础上进一步将数据只存在叶子节点,非叶子节点不存值只存储关键字或者键值和值的指向,而且叶子节点前后相连放入链表中。使得数据更加紧凑有序,只需要链表(叶子节点)的一次遍历就能获取所有树上的值。

 

B-树(B树)和B+树的区别

(1)B+树查询时间复杂度固定是logn,B-树查询复杂度最好是 O(1)。

(2)B+树相邻接点的指针可以大大增加区间访问性,可使用在范围查询等,而B-树每个节点 key 和 data 在一起,则无法区间查找。

(3)B+树更适合外部存储,也就是磁盘存储。由于内节点无 data 域,每个节点能索引的范围更大更精确。

总之,B-树每个节点即保存数据又保存索引,所以磁盘IO的次数很少;B+树只有叶子节点保存,磁盘IO多,但是区间访问比较好。

所以:

MongoDB使用B-树,所有节点都有Data域,只要找到指定索引就可以进行访问,无疑单次查询平均快于Mysql

Mysql作为一个关系型数据库,数据的关联性是非常强的,区间访问是常见的一种情况B+树由于数据全部存储在叶子节点,并且通过指针串在一起,这样就很容易的进行区间遍历甚至全部遍历。

 

 

 

参考文章:

https://blog.csdn.net/qq_17612199/article/details/52193776

https://www.cnblogs.com/snailmanlilin/p/8036514.html

posted on   orange-C  阅读(800)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示