InnoDB行格式详解,看这一文就够了

本文详细介绍了InnoDB的四种行格式:Compact、Redundant、Dynamic和Compressed。重点讲解了Compact行格式,包括记录的额外信息(变长字段长度列表、NULL值列表和记录头信息)和记录的数据内容。还提到了Redundant行格式的特点,并对Dynamic和Compressed行格式进行了简要说明,这些行格式影响着数据在磁盘上的存储效率。
摘要由CSDN通过智能技术生成

前言

我们平时是以记录为单位来向表中插入数据的,这些记录在磁盘上的存放方式被称为行格式或者记录格式,今天我们就来介绍一下InnoDB行存储格式。希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教。

基本操作

一行记录可以以不同的格式存在InnoDB中,行格式分别是compactredundantdynamiccompressed行格式。可以在创建或修改的语句中指定行格式:

-- 创建数据表时,显示指定行格式
CREATE TABLE 表名 (列的信息) ROW_FORMAT=行格式名称;
-- 创建数据表时,修改行格式
ALTER TABLE 表名 ROW_FORMAT=行格式名称;
-- 查看某数据表的行格式
show table status from 数据库名 like '<数据表名>';
复制代码

Compact行格式

Compact行格式是MySQL5.0中引入的,其目标是为了更高效的存储数据记录。其存储结构示意图如下:

从图中我们可以看出来,一条完整的记录其实可以被分为记录的额外信息记录的真实数据两部分。

记录的额外信息

这部分信息是为了描述这条记录而不是额外添加的一些信息,这些额外信息分为三部分,分别是变长字段长度列表、NULL值列表和记录头信息;

变长字段的长度列表

MySQL支持一些变长的数据类型,如Varchar,变长字段中存储多少字节的数据是不固定的,所以InnoDB在存储数据的时候,会把这些数据占用的真实字节数也保存下来,也就是变长字段时占用了两部分空间来存储的:

  • 真实的数据内容
  • 占用的字节数

在Compact行格式中,把所有的变长字段锁占用的字节数按逆序排放在变长字段字节数列表中。

另外,变长字段的长度列表不是一定存在的,如表中没有变长类型的字段,或者该记录中所有的变长字段值均为NULL

举例说明:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值