MySQL的索引建立的过程

Innodb中存储空间管理的最小单位是页,页的默认空间是16KB,每个页中存放了数据。页与页之间是通过双向链表来连接的。索引页中的数据都会按照主键的值从小到大排列并用单向链表连接起来。
 
我们先说说在没有索引的情况下是怎么查找一条记录的。 因为每个页中数据都是没有规律的,所以我们不得不遍历所有的页来得到这条数据。这样查询的效率就会很低。所以需要为记录生成一个目录页来记录这些数据。
在建立目录的过程中规定了下一个数据页的主键值必须大于上一个数据页的主键值。当一个页中的数据超出了范围了就产生一个新的页存放,这个过程会产生页分裂,数据的移动,比如主键值小的会跑去上一个页,主键值大的往后一个页移动。
2,0,3这些是页的头信息,2表示的是最小记录,0表示普通记录,3表示的是最大记录,还有就是如果是1的话表示的是目录项记录

 

 
但是问题来了,页与页之间可能并不是相邻的,也就是说可能上一个页的页号是10,下一个页的页号是20,但是这些页之间是通过双向链表来进行连接的。那么怎么去快速访问到特定的页号呢,答案就是再为每个目录页再建立一个目录项:
 

 

每一个目录项中包含了两个内容,一个是目录页中的最小主键值,另一个是页目录号就是页号。这样就可以快速的根据主键值定位到一条记录。这种目录项就叫做索引
 
参考文献:《MySql是怎样运行的:从跟上理解MySQL》

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值