Mysql InnoDb数据页的组成及记录维护

一、Mysql Innodb数据页的组成,单页数据页的大小为16KB,由以下七部分组成:

1.文件头:大小为38个字节。(页的位置,上一页下一页位置,checksum , LSN)

2.数据页头:记录页面的控制信息。大小是56个字节,包括页的左右兄弟页面指针(双向链表),页面的空间使用情况。

3.虚记录:最大虚记录和最小虚记录。

4.记录堆:行记录存储区,分为有效记录和已删除记录、自由空间链表(已删除记录组成的链表)。

5.未分配空间:页面未使用的存储空间。

6.页目录: slot信息。页目录里维护多个 slot ,一个 slot 包含多个行记录。每个 slot 占 2 个字节,记录这个 slot 里的行记录相对页初始位置的偏移量。由于索引只能定位到数据页,而定位到数据页内的行记录还需要在内存中进行二分查找,而这个二分查找就需要借助 slot 信息,先找到对应的 slot ,然后在 slot 内部通过数据行中记录头里的下一个记录地址进行遍历。每一个 slot 可以包含 4 到 8 个数据行。如果没有 slot 辅助,链表本身是无法进行二分查找的。见下图:

7.页尾:页面最后部分,占8个字节,主要存储页面的效验信息。

二、数据页内记录维护:

    顺序保证:用逻辑有序(单向链表)。

    插入策略:先自由空间链表,后未分配空间。删除操作频繁的话会产生磁盘碎片。

    页内查询:选用二分查找。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值