一、准备工作

MySQL中负责对表进行数据的读取写入工作的部分是存储引擎

二、InnoDB页简介

InnoDB是一个将表中数据存储到磁盘的存储引擎。InnoDB是将数据划分为若干页,以页作为磁盘和内存之间交互的基本单位

页的默认大小为16KB

三、InnoDB行格式

四种行格式

1、指定行格式的语法

创建表或者修改表的语句中去实现

2、COMPACT行格式

(1)记录额外信息

  • 变长字段的长度列表
  • NULL值列表
  • 记录头信息

(2)记录真实数据

InnoDB表主键生成策略:优先使用用户自定义的主键;如果用户未定义主键,选取一个不允许为NULL的UNIQUE键作为主键;若都没有,则会为表添加一个row_id隐藏列作为主键

(3)CHAR(M)列的存储格式

3、REDUNDANT行格式

(1)字段长度偏移列表

(2)记录头信息

(3)记录头信息中的1byte_offs_flag的值是怎么选择的

(4)REDUNDANT行格式中的NULL值的处理

(5)CHAR(M)列的存储格式

4、溢出列

(1)溢出列

(2)产生溢出列的临界点

5、DYNAMIC行格式和COMPRESSED行格式

四、总结

页是InnoDB中磁盘与内存交互的基本单位,也是InnoDB管理存储空间的基本单位,默认大小为16KB