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/

你可能感兴趣的:(数据库)