MySQL:索引的页存储物理结构,是如何用B+树来实现的?


prtyaa
prtyaa 2023-12-28 15:51:44 51745
分类专栏: 资讯

假如有大量的数据,就有大量的数据页,那么主键目录里就要存储大量的数据页和最小主键 值,这显然不行啊,一个主键目录就要存这么多东西?

下来就诞生了索引页。表的实际数据是存放在数据页里的,表的索引也是存放在页里的,此时索引 放在页里之后,就会有索引页,假设有很多很多的数据页,那么就可以有很多的索引页,此时 如下图所示,网上摘抄的别人的图。

那么现在根据主键id查找一行数据,怎么找?此时有很多的索引页,怎么根据id查找数据?就上图来说,是去索引页20里找?还是去索引页28里找?这也是个大问题,接下来又可以把索引页多加一个层级出来,在更高的索引层级里,保存了每个索引页和索引页 里的最小主键值,如下图所示。

这样的话,如果要找id=40这条数据,就可以在索引页35里二分查找,可以看到1<40<58,所以只能去索引页20里去找数据。假如最顶层的那个索引页里存放的下层索引页的页号也太多了,怎么办呢? 此时可以再次分裂,再加一层索引页,比如下面图里那样子

索引页不知不觉中组成了多个层级,搞的是不是有点像一棵树? 没错了,这就是一颗B+树,属于数据结构里的一种树形数据结构,所以一直说MySQL的索引是用B+树 来组成的,其实就是这个意思。

所以,以最简单最基础的主键索引来举例,为一个表的主键建立起来索引之后,其实这个主键的索 引就是一颗B+树,要根据主键来查数据的时候,直接就是从B+树的顶层开始二分查找,一层 一层往下定位,最终一直定位到一个数据页里,在数据页内部的目录里二分查找,找到那条数据。 这就是索引最真实的物理存储结构,采用跟数据页一样的页结构来存储,一个索引就是很多页组成的一 颗B+树。索引页+数据页组成的B+树就是聚簇索引

如果一颗大的B+树索引数据结构里,叶子节点就是数据页自己本身,那么称这颗 B+树索引为聚簇索引!

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=31727
赞同 0
评论 0 条
prtyaaL2
粉丝 1 发表 2553 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2966
【软件正版化】软件正版化工作要点  2885
统信UOS试玩黑神话:悟空  2855
信刻光盘安全隔离与信息交换系统  2743
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1277
grub引导程序无法找到指定设备和分区  1244
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  169
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  168
点击报名 | 京东2025校招进校行程预告  164
华为纯血鸿蒙正式版9月底见!但Mate 70的内情还得接着挖...  161
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!