当前位置: 首页 > news >正文

Mysql 中 B 树 vs B+ 树

🌳 什么是 B树 和 B+树?

它们都是多路平衡查找树(M-Way Search Tree),用于提升磁盘读写效率,常用于数据库(如 MySQL)、操作系统中的索引结构。

🔍 B树 和 B+树 的核心区别一览

特性B 树B+ 树
数据存储位置所有节点都存数据(根、内、叶)只有叶子节点存数据
内部节点内容关键字 + 数据只有关键字(不含实际数据)
叶子节点是否链表❌ 否✅ 是(叶子节点组成有序链表)
查询效率查询速度不稳定,深度少但每层含数据查询稳定,需走到底但结构更简单
范围查询需遍历整棵树✅ 非常高效,直接链表顺序查
磁盘读取次数较少,但不规律稍多,但更适合磁盘块优化
典型应用较少见,早期数据库✅ MySQL(InnoDB)、Linux 文件系统等

📌 形象理解

🟩 B树结构:

        [ 10 | 20 ]
       /    |    \
     [5]  [15]  [25]
    /      |     \
  数据   数据   数据 (所有节点都存数据)

🟦 B+树结构:

        [10 | 20]
       /    |    \
     [5]  [15]  [25]   <-- 只有关键字
      |     |     |
    [数据]→[数据]→[数据] (叶子节点链表)

🔥 为什么数据库几乎都用 B+ 树?

  1. 所有数据都在叶子节点,结构更统一,便于范围查找
  2. 叶子节点链表 → 范围查询效率极高
  3. 磁盘读取更高效:内部节点更“轻”,一页能装更多 key,树更矮,访问路径更短
  4. 支持顺序遍历:天然有序,分页、between 查询非常友好

✅ 一句话总结

B 树适合内存查找结构,B+ 树更适合磁盘和数据库,因为它只在叶子节点存数据、结构更稳定、查询更高效。

http://www.dtcms.com/a/112399.html

相关文章:

  • SQL Server 2022 脏读问题排查与思考
  • HTML5 vs HTML 和 CSS3 vs CSS:全面对比
  • Spring Boot 中使用 Redis:从入门到实战
  • Websoft9分享:在数字化转型中选择开源软件可能遇到的难题
  • 神经网络能不能完全拟合y=x² ???
  • WinForm真入门(7)——Button控件详解
  • 京东运维面试题及参考答案
  • k8s进阶之路:本地集群环境搭建
  • 谷歌 Gemini 2.5 Pro 免费开放
  • 24、 Python Socket编程:从协议解析到多线程实战
  • 如何完整迁移 Git 仓库 ?
  • yum list查询时部分包查找不到流程分析
  • 54.大学生心理健康管理系统(基于springboot项目)
  • 有人DTU使用MQTT协议控制Modbus协议的下位机-含数据库
  • Redis分布式锁详解
  • AWS Langfuse AI用Bedrock模型使用完全教程
  • 【万字总结】前端全方位性能优化指南(八)——Webpack 6调优、模块联邦升级、Tree Shaking突破
  • 安卓离线畅玩的多款棋类单机游戏推荐
  • 【leetcode100】动态规划Java版本
  • Debezium日常分享系列之:Debezium 3.1.0.Final发布
  • 什么是量子计算?
  • 【代码艺廊】pyside6桌面应用范例:homemade-toolset
  • 如何实现浏览器中的报表打印
  • Pytorch使用GPU、CUDA安装步骤注意事项
  • Redis 中 Set(例如标签) 和 ZSet(例如排行榜) 的详细对比,涵盖定义、特性、命令、适用场景及总结表格
  • CSS 创建与使用学习笔记
  • 室内指路机器人是否支持环境监测功能?
  • 【数据分享】2002-2023中国湖泊水位变化数据集(免费获取)
  • 【数据结构】树的介绍
  • k8s的pod的概述和配置