一、compact和redundant行记录模式 MySQL 5.1中Innodb存储引擎(Built-in-InnoDB)提供了compact和redundant两种格式来记录行数据,redundant是为了兼容之前版本保留的。默认情况下保存的格式为compact格式。可以通过命令show table staus like 'table_name'查看当前表使用的行格式(对应查询结果中的Row_format值)。 对于compact行记录模式:不管char还是varchar类型,NULL值都不占用存储空间。 对于redundant行记录模式:varchar类型的NUL值不占用存储空间,而char类型需要占用存储空间。 二、dynamic和compressed行记录模式 Innodb plugin引入新的文件格式Barracuda,并将以前支持的compact和redundant行记录模式称为Antelope文件格式。 Barracuda文件格式包含两种新的行记录格式:Dynamic和Compressed。 这两种文件格式在处理行溢出时候,Antelope会存放768个前缀字节,Barracuda只会存放20个字节的指针,见下图。