Mysql之数据页结构

InnoDB的数据页结构

数据页结构

请添加图片描述

名称中文名占用空间(字节)简单描述
File Header文件头38页的通用信息
Page Header页面头56数据页专有的信息
Infimum + Supremum最大、最小记录26两个虚拟的行记录
User Records用户记录不确定实际存储的行记录内容
Free Space空闲空间不确定页中尚未使用的空间
Page Directory页面目录不确定页中的某些记录的相对位置
File Trailer文件尾8校验页是否完整

用户插入的数据会被存储到User Records中,但是在刚创建数据页的时候该部分并不存在,全部都是Free Space,插入的数据不断的占用Free Space的空间。当Free Space也没有空间的时候就会创建新的数据页。

Page Directory

将所有的正常的记录分成不同的组,包括infimum和supremum记录,每个组的最后一条数据的n_owned记录本组中有几条数据。将每个组的最后一条数据的在页面内的偏移量单独提取处理存储在靠近页尾的地方,这个地方就是Page Directory。这些地址偏移量称为槽,每个槽占用两个字节。页目录就是多个槽组成的。

分组规则:
(1):infimum单独成一个组。
(2):supremum所在组的数据只能是1~8条。
(3):剩下组的数据只能是4~8条。

按照下面的步骤进行分组:
1:初始情况下只有infimum和supremum两个分组。
2:之后每插入一条记录,都会从页目录中找到对应记录的主键值比待插入记录的主键值大并且差值最小的槽,然后把该槽对应的n_owned加一,直到记录数等于8。
3:当一个组中的记录数等于8时,再插入一条记录就会将组中的记录拆成两个组,其中一个组中的数据记录是4条,两外一个组中的记录数是5条。拆分过程中会增加一个槽,

查找数据:
(1):首先使用二分法找到对应的组。
(2):然后组内根据next_record顺序查找。

Page Header

状态名称占用空间大小描述
page_n_dir_slots2在页目录中的槽数量
page_heap_top2还未使用的空间的最小值,free space的起始地址
page_n_heap2第一位表示记录是否为紧凑型,剩余的15位表示本页中记录的堆中记录的数量
page_free2该删除链表的头节点的偏移量
page_garbage2已删除记录中占用的字节数
page_last_insert2最后插入记录的位置
page_direction2记录插入的方向
page_n_direction2一个方向连续插入记录的数量
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值