随着InnoDB存储引擎的发展,新的页数据结构有时用来支持新的功能特性。比如前面提到的InnoDB Plugin,提供了新的页数据结构来支持表压缩功能,完全溢出的(Off page)大变长字符类型字段的存储。这些新的页数据结构和之前版本的页并不兼容。因此从InnoDB Plugin版本开始,InnoDB存储引擎通过Named File Formats机制来解决不同版本下页结构兼容性的问题。
InnoDB Plugin将之前版本的文件格式(file format)定义为Antelope,将这个版本支持的文件格式定义为Barracuda。新的文件格式总是包含于之前的版本的页格式。下图显示了Barracuda文件格式和Antelope文件格式之间的关系,Antelope文件格式有Compact和Redudant的行格式,Barracuda文件格式即包括了Antelope所有的文件格式,另外新加入了前面我们已经提到过的Compressed何Dynamic行格式。
在InnoDB Plugin的官方手册中提到,未来版本的InnoDB存储引擎还将引入的新的文件格式,文件格式的名称取自动物的名字(这个学Apple?),并按照字母排序进行命名。翻阅源代码,发现目前已经定义好的文件格式有:
/**List of animal names representing file format.*/
static const char*file_format_name_map[]={
"Antelope",
"Barracuda",
"Cheetah",
"Dragon",
"Elk",
"Fox",
"Gazelle",
"Hornet",
"Impala",
"Jaguar",
"Kangaroo",
"Leopard",
"Moose",
"Nautilus",
"Ocelot",
"Porpoise",
"Quail",
"Rabbit",
"Shark",
"Tiger",
"Urchin",
"Viper",
"Whale",
"Xenops",
"Yak",
"Zebra"
};
参数innodb_file_format用来指定文件格式,可以通过下面的方式查看当前所使用的InnoDB存储引擎的文件格式:
show variables like 'version'\G
show variables like 'innodb_version'\G
show variables like 'innodb_file_format'\G
show variables like 'innodb_file_format_check'\G
参数innodb_file_format_check用来检测当前InnoDB存储引擎文件格式的支持度,该值默认为ON,如果出现不支持的文件格式,你可能在错误日志文件中看到类似如下的错误:
InnoDB:Warning:the system tablespace is in a
file format that this version doesn't support