mysql学习笔记-InnoDB数据存储结构

2、数据页内部组成

在这里插入图片描述
1、File Header(文件头部)(38字节)
FIL_PAGE_OFFSET(4字节):数据页唯一编号
FIL_PAGE_TYPE(2字节):页面类型,索引页、溢出页、系统页、Undo日志页等信息
FIL_PAGE_PREV(4字节)和FIL_PAGE_NEXT(4字节):页与页之间形成双向链表
FIL_PAGE_SPACE_OR_CHKSUM(4字节):校验数据完整性
FIL_PAGE_LSN(8字节):页面被最后修改对应的日志序列
2、Page Header(页面头部)
数据页中存储记录的状态信息。
3、Infimum + Supremum(最小最大记录)
记录主键最大值、最小值
4、Free Space (空闲空间)
插入用户记录之后剩余空间情况
5、Page Directory(页目录)
使用页目录,二分法查找,提升检索效率
在这里插入图片描述

6、Trailer(文件尾部)(8字节)
为了校验页的完整性

3、COMPACT行格式

在这里插入图片描述
变长字段长度列表:存放变长字段真实占用字节数,逆序存放
NULL值列表:null字段类型,到底存放值没有
记录头信息:在这里插入图片描述
记录真实数据:除了自己定义的列,系统还会增加row_id唯一标识一条记录;transaction_id:事务id;roll_pointer:回滚指针

4、区、段、碎片区

为什么要有区的概念?一个去管辖64物理位置上连续的页,避免随机IO成本非常高。
为什么要有段?InnoDB对B+树的叶子节点和非叶子节点进行了区别对待,存放叶子节点的区的集合就算一个段,非叶子节点区的集合也算是一个段。常见的段有 数据段、 索引段、 回滚段。
为什么要有碎片区?
碎片区直属于表空间,并不属于任何一个段。碎片区中的页既可以属于A段也可以属于B段,有些甚至哪个都不属于。为了节约存储空间而设计。

5、表空间

表空间是一个 逻辑容器,表空间存储的对象是段,在一个表空间中可以有一个或多个段,但是一个段只能属于一个表空间。表空间数据库由一个或多个表空间组成,表空间从管理上可以划分为系统表空间(Systemtablespace)、独立表空间(File-per-table tablespace)、撤销表空间(Undo Tablgspace)和 临时表空间(Temporary Tablespace)等。

5.1 独立表空间

独立表空间结构
独立表空间由段、区、页组成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值