数据结构:内存操作红黑树快,磁盘操作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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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)