MySQL的索引建立的过程(二)

前面只是实现了一个简单的索引方案,因为我们假设的是所有的目录项都是连续存储的。而且一个页的大小是有限的,当数据量比较大的时候显然是不行的,而且如果要将一个目录页中的记录删除,则需要进行大量的数据移动。显然这样是不太好的。
 
所以想一个解决的方案。我们发现其实这个目录项和我们的用户记录的信息差不多,只不过目录项中存的是主键号和页号。所以我们可以复用这一结构,但是得区分一下目录项和普通的用户记录,我们之前讲过头信息1表示的是目录项记录,所以用1来表示这是一条目录项记录。现在的样子就是这样:

 

显然我们会想如果数据量大了超过了16KB呢,答案是再来一个页来保存上目录项的记录。也就是这样的:

 

但是还是有问题,想想 ,我们现在这个结构想要根据主键去查一条记录先要去查找目录项的页号,再去目录项。最后找到存放真是数据的地方。当数据量很大的时候,这些目录项页号可能是不连续的。那我们怎么办呢? 当然是再建立一个目录页来管理这些目录项的页,结构就变成了这样了:

 

等等,这东西为什么这么眼熟啊,对了 ,这不是一颗树的结构吗,没错这就是传说中的B+树 。
 
参考文献:《MySql是怎样运行的:从跟上理解MySQL》

转载于:https://www.cnblogs.com/lgxblog/p/11066098.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值