登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

SeaRiver Blog

实力才是你一生最好的依靠!

 
 
 

日志

 
 

InnoDB Plugin文件格式(概述)  

2010-05-24 16:39:45|  分类: MySQL |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

本文将介绍InnoDB Plugin数据表格式的基本概念。

1. 配置参数innodb_file_format

这是一个很容易混淆的概念。目前,在InnoDB Plugin(1.0.6)配置文件中innodb_file_format支持两种:Antelope/??nt?l??p/、Barracuda/?b?r??kju?d?/。他们分别是两种文件格式的代号,在未来版本中,InnoDB将继续延续这种代号机制,它们会是Antelope, Barracuda, Cheetah, Dragon, Elk, Fox等等。

Antelope_Barracuda

Antelope是Built-in-InnoDB(MySQL内置的InnoDB)支持文件格式的代号,有两种“数据表格式”(row_format):Redundant、Compact;Barracuda是InnoDB Plugin支持的文件格式,在原来的基础上新增了两种数据表格式的支持:Dynamic和Compressed。

对应关系表:

InnoDB Plugin文件格式(概述) - SeaRiver - SeaRiver  Blog
 一般,innodb_file_format在配置文件中指定;row_format则在创建数据表时指定。

2. 新建数据表的格式、已有数据表格式

要支持新的数据表格式,我们需要在配置文件中新增配置选项:

innodb_file_format=barracuda
innodb_file_per_table = 1
innodb_strict_mode=1 #建议加上

然后,在创建数据表时,指定参数ROW_FORMAT就可以指定特定的格式了。例如:

CREATE TABLE name (column1 INT PRIMARY KEY) ENGINE=InnoDB
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;

这里创建了一个COMPRESSED的数据表,指定压缩后页大小为4K。

一般地,我们通过SHOW CREATE TABLE就可以看到数据表的具体格式了。特别地,我们也可以通过观察ibd的文件头来确定文件的格式:

$od -t x1 -j 54 -N 4 t3.ibd #compact
0000066 00 00 00 27
0000072
$od -t x1 -j 54 -N 4 t2.ibd #compressed
0000066 00 00 00 00
0000072

3. 文件格式兼容性检查

InnoDB Plugin引入的新的文件格式,也引入较为完整的文件兼容性检查,以防止误操作非兼容的文件格式。兼容性检查一共有三类:启动数据库时、创建数据表时、访问数据表时。

3.1 在数据库启动时候,参数innodb_file_format_check(>=5.1.38)会要求InnoDB在启动时检查当前数据表的格式。设置为ON时,如果检测到不支持的格式,那么InnoDB会启动失败;设置为OFF时,检测到不支持的仅会给出警告,并不会导致启动失败。

把innodb_file_format_check设置为OFF是很危险的。在InnoDB启动后,一般需要做一些恢复工作,例如Double write buffer/Insert buffer中的数据处理(这依赖于innodb_fast_shutdown参数),试想如果成功启动,但是某些表是不支持的格式,但是InnoDB仍然安装旧版本做恢复,这可能会毁掉相关数据。

所以,一般建议innodb_file_format_check设置为ON。如果是OFF,关闭InnoDB的innodb_fast_shutdown参数务必设置成0。

3.2 除了启动时会检查兼容性外,当创建数据表时,InnoDB会依据参数InnoDB_file_format进行检查,如果创建的数据表格式高于InnoDB_file_format,则创建会失败。

3.3 当访问某个数据表(table-access)时,InnoDB也会进行兼容性检查。只要当前运行的InnoDB版本能够支持的格式,都能够被访问,无论参数InnoDB_file_format的配置。

  评论这张
 
阅读(1552)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018