【MySQL】查询原理 —— B+树查询数据全过程

使用B+树作为索引结构的原因:

一种自平衡树:

B+树在插入和删除的时候节点会进行分裂和合并操作,以保持树的平衡,存在冗余节点,使得删除的时候树结构变化小,更高效。

高度不会增长过快,查询磁盘I/O次数减少:

B+树是一种多叉树,非叶子节点只保存主键或索引值和页面指针,使得每一页能够容纳更多记录,内存中存放更多索引,容易命中缓存,查询I/O次数减少。

范围查询能力强:

叶子节点通过链表连接定位到叶子节点的起点后,只需要顺序扫描链表后续的数据,非常高效。

根节点开始,根据键值大小确定位置于左/右子树

非叶子节存储主键和页号,通过页号定位到叶子节点(默认16k大小),可存储多条数据。

通过页目录索引快速找到记录,页目录每个槽指向对应分组的最大记录。

通过二分查询,利用槽定位数据所在组。

InnoDB规定:

第一个分组只有一条记录

中间的分组4-8条记录

最后一个分组1-8条记录

B+树和B树的区别:

B+树更加稳定,平均,都要从根结点查询到叶子节点。

B+树便于区间查找,B树只能每一层遍历查找。

B树每个节点都存储数据,B+树存储key和指针,内存中可存放更多索引页,减少磁盘查询次数。

相关推荐
计算机安禾4 小时前
【数据库系统原理】第19篇:计算机存储层次结构与数据库文件的物理组织
数据库·oracle
JAVA面经实录9175 小时前
操作系统面试题
java·服务器·数据库·计算机网络·面试
摇滚侠5 小时前
mariadb-libs 被 mysql-community-libs-5.7.28-1.el7.x86_64 取代
数据库·mysql·mariadb
DIY源码阁6 小时前
JavaSwing饮品管理系统 - MySQL版
java·数据库·mysql·eclipse
专注搞钱6 小时前
GPT-4o写设备Recipe:从3小时到10分钟
数据库·人工智能·gpt·半导体
东风破1377 小时前
达梦数据库实战:备份恢复与数据迁移全攻略(实例初始化、服务注册、路径迁移)
数据库·chrome
SelectDB技术团队7 小时前
2026 SelectDB AI 产品发布会:Agent Native 数据基础设施能力全景发布
数据库·人工智能·agent·apache doris·selectdb
爱吃羊的老虎7 小时前
【数据库】模块一:数据库基础与关系代数
数据库
dishugj8 小时前
iSCSI + Multipath + ASM:Oracle RAC 共享存储技术链详解
数据库·oracle
yoothey8 小时前
MySQL事务机制解析 - 面试高分知识点
数据库·mysql·面试