MySQL(InnoDB剖析):18---table之(Named File Formats机制)
原创
©著作权归作者所有:来自51CTO博客作者董哥的黑板报的原创作品,请联系作者获取转载授权,否则将追究法律责任
一、Named File Formats机制概述
- 随着InnoDB存储引擎的发展,新的页数据结构有时用来支持新的功能特性。比如前面提到的InnoDB 1.0.x版本开始提供了新的页数据结构来支持表压缩功能,完全的溢出(Off page)大变长字符类型字段的存储
- 这些新的页数据结构和之前版本的页并不兼容,因此从InnoDB 1.0.x版本开始,InnoDB通过Named File Formats机制来解决不同版本下页结构兼容性的问题
二、文件格式分类
- InnoDB存储引擎将1.0.x版本之前的文件格式定义为Antelope,将这个版本支持的文件格式定义为Barracuda。新的文件格式总是包含于之前的版本的页格式
- 下图显示了Barracuda文件格式和Antelope文件格式之间的关系:
- Antelope文件格式:有Compact和Redundant的行格式
- Barracuda文件格式:既包括了Antelope所有的文件格式,还新加入了前面提到过的Compressed和Dynamic行格式
- InnoDB Plugin的官方手册提到了,未来版本的InnoDB存储引擎还将引入新的文件格式,此文件格式的名称取自动物的名字,并按照字母排序进行命名。翻阅源代码,可以发现目前已经定义好的文件格式有:
三、innodb_file_format参数
- 参数innodb_file_format用来指定文件格式
- 可以通过下面的方式来查看当前所使用的InnoDB存储引擎的文件格式
select @@version\G;
shjow variables like 'innodb_version'\G;
show variables like 'innodb_file_format'\G;
四、innodb_file_format_check参数
- 该参数用来检测当前InnoDB存储引擎文件格式的支持度,默认为ON
show variables like 'innodb_file_format_check';
- 如果出现不支持的文件格式,用户肯能在错误日志文件中看到类似如下的错误: