MySQL是怎样运行之InnoDB记录存储结构

158 阅读1分钟

InnoDB存储引擎

数据存放在磁盘,单真正处理数据是在内存中完成的,MySQL服务器中负责对表中的数据进行读取和写入的部分是存储引擎,服务器又支持不同的存储引擎,比如InnoDB、MyISAM、MEMORY等。

InnoDb 采用方法是:将数据分为若干个,以页作为磁盘和内存之间交互的基本单位,InnoDb中页的大小一般为16KB,也就是一般情况下,一次最少从磁盘中读取16Kb的内容到内存中,一次最少把内存中16KB数据刷新到磁盘上。

InnoDB行格式

数据库表中的数据在磁盘上的存放形式称为行格式或是记录格式,行格式分为四种类型:COMPACT、REDUNDANT、DYNAMIC、COMPRESSED。

我们可以使用语句去设置表的行格式:

CREATE TABLE 表名 (字段名) ROW_FORMAT = 行格式名称

ALTER TABLE 表名 ROW_FORMAT = 行格式名称

COMPACT行格式

行格式.drawio.png

REDUNDANT格式

Redundant行格式的首部是一个字段长度偏移列表,同样是按照列的顺序逆序放置的。

Redundant行记录.png

Dynamic和Compressed行格式

这两种行格式类似于COMPACT行格式,只不过在处理行溢出数据时有点儿分歧,它们不会在记录的真实数据处存储字符串的前768个字节,而是把所有的字节都存储到其他页面中,只在记录的真实数据处存储其他页面的地址。另外,Compressed行格式会采用压缩算法对页面进行压缩。