MySQL源码分析(6):Innodb文件格式及压缩配置

作者: Yuan Zhou (Intel) (7 篇文章) 日期: 八月 28, 2010 在 6:23 下午

Innodb文件格式及压缩配置
Innodb文件格式代表了数据库文件在磁盘上的组织形式。

Tablespace包含了很多文件或raw disk partition。
当innodb_file_per_table = on时,每个数据库会使用单独的ibd文件存储数据,否则将和系统表等数据一起放在innodb_data_file_path指定的文件中。
在系统表空间中,innodb会维护一些系统信息:

  • ?


Internal data dictionary

?

Undo

?

Insert buffer

?

Double write buffer

?

Mysql replication info

表空间有多个层次,其中最小的单位是page,在未压缩时每个page是16k;64个page组成一个extent;多个extent和page构成一个segment。


在Innodb中,page有很多中格式,如下图所示:

存放若干条记录的page的格式如下图所示,由page header,page trailer,page body组成。

在Innodb中可以指定文件格式,它们会是Antelope, Barracuda, Cheetah, Dragon, Elk, Fox等等,按照字母顺序继续排列。
Antelope是Built-in-InnoDB(MySQL内置的InnoDB)支持文件格式的代号,有两种“数据表格式”(row_format):Redundant、Compact;Barracuda是InnoDB Plugin支持的文件格式,在原来的基础上新增了两种数据表格式的支持:Dynamic和Compressed。
一般,innodb_file_format在配置文件中指定;row_format则在创建数据表时指定。

启用压缩格式的条件
a) Innodb_file_per_table = 1
b) Innodb_file_format = barracuda
CREATE TABLE name (column1 INT PRIMARY KEY) ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
这条语句将会创建一个压缩的page size=8K的表。

参考文献:
1. http://dev.mysql.com/doc/refman/5.0/en/innodb-file-space.html
2. InnoDB Internals: InnoDB File Formats and Source Code Structure,MySQL Conference, April 2009, Heikki Tuuri CEO Innobase, Calvin Sun Principal Engineer, Oracle Corporation

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29114615/viewspace-1792441/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29114615/viewspace-1792441/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值