首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

MySQL原理 - InnoDB引擎 - 行记录存储 - Redundant行格式

Redundant 行格式 这个是最古老的,最简单粗暴的行格式了,现在基本上已经不用了,因为占用空间最多,从而导致内存碎片化最严重,是最低效的行格式了(针对现在varchar字段使用的更多,而对于 varchar...字段改变长度的更新大部分情况下就是将原有行的数据标记为已删除,然后在其他空间足够的地方新建记录,Redundant 顾名思义,占用空间更多,所以碎片化,空间浪费会更严重)。...MySQL官网的 Internal Mannual 给出的行格式示例,其实就是 Redundant 格式的: InnoDB Record High-Altitude Picture 创建一个和上一篇中的示例一样的表...- 所有字段长度列表 不同于 Compact 行格式,Redundant 的开头是所有字段长度列表,而不是变长字段列表 + NULL 值列表。...对于可变长度字段,Redundant 和 Compact 是相同的,为 NULL 不占用空间。只要改变长度,就会将原有记录标记为删除,之后再寻找新的空间重建更新后的记录。 2.

60430

Innodb如何实现表--上篇

Innodb如何实现表--上篇 数据是如何被管理起来的 表空间 段 区 页 行 行记录格式 Compact记录行格式 Redundant行记录格式 行溢出数据 Compressed和Dynamic行记录格式...在InnoDB 1.0.x版本之前,InnoDB存储引擎提供了Compact和 Redundant两种格式来存放行记录数据,这也是目前使用最多的一种格式。...---- Redundant行记录格式 Redundant是MySQL 5.0版本之前InnoDB的行记录存储方式,MySQL5.0支持 Redundant是为了兼容之前版本的页格式。...Redundant行记录采用如图所示的方式存储。 从上图可以看到,不同于Compact行记录格式,Redundant行记录格式的首部是一个字段长度偏移列表,同样是按照列的顺序逆序放置的。...所以在Redundant行记录格式下,CHAR类型将会占用可能存放的最大值字节数。有兴趣的读者可以自行尝试。

41710

MySQL原理 - InnoDB引擎 - 行记录存储 - Off-page 列

本文基于 MySQL 8 在前面的两篇文章,我们分析了 MySQL InnoDB 引擎的两种行记录存储格式: Compact 格式 Redundant 格式 在这里简单总结下: Compact 格式结构...但是我们还没有考虑存储特别长数据的情况 Redundant 格式结构与 Compact 格式的区别: 所有字段长度列表:不同于 Compact 行格式,Redundant 的开头是所有字段长度列表...Redundant 中 off-page 列处理 对于 Redundant 行格式中比较长的列,只有前 768 字节会被存储在数据行上,剩下的数据会被放入其他页。...由此可见 Redundant 行格式中,off-page 的结构其实是: 这样我们会联想到三个问题: 什么时候列会变成 off-page 列?...还有,由于数据不存储在行数据一起,搜索读取效率会比较低,所以,redundant 行格式会尽可能不把列变为 off-page 列,并尽量少的将列变为 off-page 列。 2.

1.6K30
领券