InnoDB记录存储结构和数据页结构

一、InnoDB记录存储结构

我们平时是以记录为单位向表中插入数据的,这些记录在磁盘上的存放形式也被称为行格式或记录格式。目前共有4种不同类型的行格式,分别是COMPACT、REDUNDANT、DYNAMICCOMPRESSED。这些行格式的原理大体上是相同的。

我们可以在创建或修改表的语句中指定行格式:

CREATE TABLE 表名 (列的信息) ROW_FORMAT=行格式名称

1.1 COMPACT行格式

在这里插入图片描述
行格式分为两大部分:

1. 记录的额外信息:
这部分信息是服务器为了更好地管理记录而添加的信息。又分为三个部分:
(1)变长字段长度列表

MySQL支持一些变长的数据类型,如VARCHAR(M), VARBINARY(M), 各种TEXT类型, 各种BLOB类型。这些列也被称为变长字段。变长字段中存储的字节数是不固定的,所以我们在存储真实数据的时候需要把这些数据占用的字节数也存起来。

注:变长字段长度列表不存储值为NULL的列的内容长度

(2)NULL值列表

一条记录中某些列可能存储NULL值,如果把这些NULL值都放到记录的真实数据的地方会很占地方,所以可将一条记录中为NULL的列统一管理起来,存储到NULL值列表中。

将允许存放NULL值的列分配一个二进制位,值为1表示值为NULL,为0时表示不为NULL。

(3)记录头格式

记录头信息由固定的5字节组成,用于描述记录的一些属性。
在这里插入图片描述在这里插入图片描述
注:各部分中列的信息按照列的顺序逆序存放

2. 记录的真实数据:
记录的真实数据除了我们自定义的列的数据外,MySQL会

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值