原址:http://dev.mysql.com/doc/refman/5.1/en/multiple-tablespaces.html
你可以存储每个InnoDB表数据以及索引在自己的文件。这个特性被称为"独立表空间",因为每张表都拥有自己的表空间。
使用独立表空间对于以下需求者十分有益:
将表数据存放于不同的物理磁盘设备
希望快速对单个表进行备份恢复而不中断其它表的使用
你可以通过在“my.conf”的"[mysqld]"部分添加以下配置来启用独立表空间:
[mysqld]
innodb_file_per_table
重启mysql服务之后,InnoDB将在数据库目录内,重新为每张表创建各自独立的"tbl_name.ibd"文件。这有点类似于MyISAM表的做法,不过MyISAM会创建出数据“tbl_name.MYD”和索引文件"tbl_name.MYI"。InnoDB是将数据和索引共同存储于“tbl_name.ibd”文件内。当然,“tbl_name.frm”文件依旧被创建。
如果将my.conf配置中不指定“innodb_file_per_table”,InnoDB为所有表使用共享表空间存储。
“innodb_file_per_table”选项开启后会创建新的文件,但不影响已经存在的“共享表空间”表,只要开、关该选项并重启Mysql服务,就可以交叉访问在“共享表空间”和“独立表空间”的表。
提示:
InnoDB通常需要使用共享表空间来存储它的内部数据和“undo logs”,“.ibd”不足以满足InnoDB的需求。
你不能向MyISAM一样随意移动InnoDB的ipd文件到其它数据库目录内,因为InnoDB共享表空间内部也定义了数据库名称;而且InnoDB还需要确保它的事务IDs和日志序列好的连续完整
需要移动.ibd文件至另一个库,使用以下命令:
RENAME TABLE db1.tbl_name TO db2.tbl_name;
|
|