Mysql索引页结构

8 篇文章 1 订阅

查询操作

  1. InnoDb通过B+Tree聚集索引搜索时,只能找到该记录所在的索引页(index page),而不能到具体的行记录。
  2. 找到该索引页(index page)后将该页加载入内存。
  3. 通过key在索引页(index page)的directory slots中进行二分查找(binary search),找到key对应的slot。
  4. 因为slot是管理多条记录,普通的slot最少管辖4条,最多管辖8条,所以会再根据KEY在对应的slot管理的记录中顺序(linear search)查找,找到最终结果。

  • Page Directory结构:
    这里写图片描述

    • 从上图可以看出Page Directory包含至少两个infimum slot,supermum slot,slot指向record(rec)指针(pointer to ‘A’),n_owned代表的是向前有多少个rec属于这个slot,中间被管辖的rec的n_owned = 0。
    • 通过directory的二分查找只能查到对应记录所属的slot,还需要通过slot内部的二分查找才能精确定位到对应的记录。这种设计的做法可以减小directory对page空间的占用,又能有很好查找的效率。
  • 索引页(index page)结构:
    这里写图片描述

    • 索引页的记录是一个单向链表。
    • 页是mysql操作的最小单位,块是文件系统操作的最小单位,扇区是磁盘操作的最小单位。
  • 参考资料:

    • http://blog.csdn.net/duxingxia356/article/details/42674451
    • https://dev.mysql.com/doc/internals/en/innodb-page-directory.html
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值