[Mysql]Innodb 独立表空间和共享表空间

时间:2021-08-01 10:21:41

innodb有2中表空间方式: 共享表空间 和 独立表空间


查询数据的设置:
show variables like '%per_table';
默认是共享表空间,独立表空间在配置文件中添加 innodb_file_per_table=1 就可以设置了。

共享表空间数据增大以后可以使用
innodb_data_file_path的配置规划多个表空间文件

独立表空间一般是单表过大的情况下使用(至少上几个G)

想要将共享表空间转化为独立表空间有两种方法:
1.需要锁库,全库导出,停止服务,ibdata1 可以移走或者删除,然后配置my.cnf,然后在启动mysql,
把数据导入。
2.修改配置文件my.cnf中的参数innodb_file_per_table参数为1,重启服务后将需要修改的所有innodb表都执行一遍:alter table table_name engine=innodb;
使用第二种方式修改后,原来库中的表中的数据会继续存放于ibdata1中,新建的表才会使用独立表空间

可能会用到的sql:
SELECT  `TABLES`.TABLE_SCHEMA,`TABLES`.TABLE_NAME,`TABLES`.`ENGINE`  FROM information_schema.`TABLES` 
WHERE `ENGINE`='INNODB' AND TABLE_SCHEMA='Idx'

更改之后再去看数据文件,可以观察数据文件的变化。

相关连接: