一、准备工作
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