5、InnoDB页结构

编程

从图中可以看出,一条完整的记录可以分为记录的额外信息和记录的真实数据.

记录的额外信息可以分为:变长字段长度列表、NULL值列表、记录头信息.

记录的头信息如下所示

2.1.1、记录的真实数据

对于record_format_demo表来说,记录的真实数据除了c1、c2、c3、c4这几个我们自定义的列数据以外,MySQL会为每个记录默

认的添加一些列,称为隐藏列,包括DB_ROW_ID(行ID),DB_TRX_ID(事务ID),DB_POLL_PTR(回滚指针)

InnoDB对主键的生成策略:优先使用用户自定义的主键作为主键,如果用户没有定义,就选择一个Unique键作为主键,如果表中

Unique键都没有的话,则InnoDB会为表默认添加一个row_id的隐藏列作为主键

2.2、Redundant行格式

MySQL5.0之前用的一种行格式

2.3、Dynamic行格式和Compressed行格式

Dynamic和Compressed行格式,我现在使用的MySQL版本是5.7,它的默认行格式就是Dynamic,这俩行格式和Compact行格式挺像,

只不过在处理行溢出数据时有点儿分歧,它们不会在记录的真实数据处存储字段真实数据的前768个字节,而是把所有的字节都存

储到其他页面中,只在记录的真实数据处存储其他页面的地址,就像这样

Compressed行格式和Dynamic不同的一点是,Compressed行格式会采用压缩算法对页面进行压缩,以节省空间

以上是 5、InnoDB页结构 的全部内容, 来源链接: utcz.com/z/516052.html

回到顶部