MySQL InnoDB共享表空间
简介ibdata1
ibdata1文件是InnoDB存储引擎的共享表空间文件,存放位置my.ini 中的 datadir="D:\phpStudy\MySQL\data",目录下。
查看innode_file_per_table 参数的状态
show variables like '%per_table';
表空间
Innodb存储引擎可将所有数据存放于ibdata*的共享表空间,也可将每张表存放于独立的.ibd文件的独立表空间。
共享表空间 : 某一个数据库的所有的表数据,索引文件全部放在一个文件中,默认这个共享表空间的文件路径在data目录下。 默认的文件名为:ibdata1 初始化为10M。
独立表空间 : 每一个表都将会生成以独立的文件方式来进行存储,每一个表都有一个.frm表描述文件,还有一个.ibd文件。 其中这个文件包括了单独一个表的数据内容以及索引内容,默认情况下它的存储位置也是在表的位置之中。
共享表空间转化为独立表空间:
1.先备份数据,然后修改配置文件my.cnf中的参数 innodb_file_per_table 参数为1/on开启独立表空间,重启服务后将备份数据导入即可。
2.修改配置文件my.cnf中的参数 innodb_file_per_table 参数为1/on,重启服务后将需要修改的所有innodb表都执行一遍:alter table table_name engine=innodb;会将innodb表从系统共享表空间移动到独立的.ibd文件。
使用第二种方式修改后,原来库中的表中的数据会继续存放于ibdata1中,新建的表才会使用独立表空间