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