Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103655231
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Mysql/postgreSQL

2008-04-19 17:22:57


原址: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;
阅读(860) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~