随着 InnoDB存储引擎的发展,新的页数据结构有时用来支持新的功能特性。比如前面提到的 InnoDB1.0x版本提供了新的页数据结构来支持表压缩功能,完全的溢出(Off page)大变长字符类型字段的存储。这些新的页数据结构和之前版本的页并不兼容,因此从InnoDB 1.0.x版本开始, InnoDB存储引通过 Named File Formats机制来解决不同版本下页结构兼容性的问题。
InnoDB存储引擎将1.0.x版本之前的文件格式(file format)定义为 Antelope,将这个版本支持的文件格式定义为 Barracuda。新的文件格式总是包含于之前的版本的页格式。下图显示了 Barracuda文件格式和 Antelope文件格式之间的关系, Antelope文件格式有 Compact和 Redudant的行格式, Barracuda文件格式既包括了 Antelope所有的文件格式,另外新加入了之前已经提到过的Compressed和 Dynamic行格式。
参数 innodb_file_format用来指定文件格式,可以通过下面的方式来查看当前所使用的 InnoDB存储引擎的文件格式。
mysql> show variables like 'innodb_file_format';
+--------------------+-----------+
| Variable_name | Value |
+--------------------+-----------+
| innodb_file_format | Barracuda |
+--------------------+-----------+
1 row in set (0.01 sec)
参数 innodb_file_format_check用来检测当前innoDB存储引擎文件格式的支持度,该值默认为ON,如果出现不支持的文件格式,用户可能在错误日志文件中看到类似如下的错误。
InnoDB: Warning: the system tablespace is in a file format that this version doesn't support