从零开始的Linux运维屌丝之路,资源免费分享平台   运维人员首选:简单、易用、高效、安全、稳定、社区活跃的开源软件
  • 首页
  • MYSQL
  • MySQL参数优化 - innodb_file_per_table(独立表空间)

MySQL参数优化 - innodb_file_per_table(独立表空间)

发布:蔺要红09-01分类: MYSQL


innodb_file_per_table = 1   可以修改InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间。

独立表空间优点:
1. 每个表都有自已独立的表空间。
2. 每个表的数据和索引都会存在自已的表空间中。
3. 可以实现单表在不同的数据库中移动。
4. 空间可以回收(除drop table操作处,表空不能自已回收)


1Drop table操作自动回收表空间,如果对于统计分析或是日值表,删除大量数据后可以通过:alter table TableName engine=innodb;回缩不用的空间。
2
对于使innodb-plugin的Innodb使用turncate table也会使空间收缩。
3
对于使用独立表空间的表,不管怎么删除,表空间的碎片不会太严重的影响性能,而且还有机会处理


缺点:
单表增加过大,如超过100个G。
结论:
共享表空间在Insert操作上少有优势,其它都没独立表空间表现好
启用独立表空间时,合理调整一 下:innodb_open_files
1.innodb_file_per_table设置.开启方法:
在my.cnf中[mysqld]下设置
innodb_file_per_table=1
2.查看是否开启:
mysql> show variables like ‘%per_table%’;
3.关闭独享表空间
innodb_file_per_table=0关闭独立的表空间
mysql> show variables like ‘%per_table%’;

数据存放位置
# 共享表空间数据存放位置
[root@test01 /data/3306/data]# ll  
total 141M
drwx------ 2 mysql mysql   40 2019-09-01 18:55 hong
-rw-rw---- 1 mysql mysql 128M 2019-09-01 18:55 ibdata1  # 大小这个参数控制 innodb_data_file_path = ibdata1:128M:autoextend

独立表空间 每个库的数据目录下,每个表会单独有一个 ibd 文件,就不会存到 ibdata1里了(这里为aaaa库里只有一个test表的展示)
[root@yao_hong aaaa]# ll                 
总用量 112K
-rw-rw---- 1 mysql mysql   67 9月   1 20:33 db.opt
-rw-rw---- 1 mysql mysql 8.4K 9月   1 20:33 test.frm
-rw-rw---- 1 mysql mysql  96K 9月   1 20:33 test.ibd


将共享表空间转化为独立表空间有如下两种方法:
1.先逻辑备份,然后修改配置文件my.cnf中的参数innodb_file_per_table = 1,重启服务后将逻辑备份导入即可。
2.修改配置文件my.cnf中的参数innodb_file_per_table = 1,重启服务后将需要修改的所有innodb表都执行一遍:alter table table_name engine=innodb;
Note:使用第二种方式修改之后,原来库中的表中的数据会继续存放于ibdata1中,新建的表才会使用独立表空间。
温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,如有侵权我会在24小时之内删除!

欢迎使用手机扫描访问本站