乐趣区

MySQL的innodb_file_per_table

在使用 Percona XtraBackup 的部分备份功能时,发现官方文档的第一句话就是:
xtrabackup supports taking partial backups when the innodb_file_per_table option is enabled.
于是查询了一下 MySQL 的 innodb_file_per_tableinnodb_file_per_table 顾名思义,首先是 innoDb 引擎的配置,其次表示每表一个文件。其实也就是独立表空间,与之对应的就是共享表空间。打开 MySQL 的 datadir,进入一个 innoDb 数据库的目录,会看到每张表都对应有两个文件:table_name.frm 和 table_name.ibd,这就是开启了独立表空间的效果。查看是否开启
mysql> show variables like ‘%per_table%’;
开启方法:在 my.cnf 文件 [mysqld] 下设置
innodb_file_per_table=1
MySQL 自 5.6.6 版本,就默认开启了这个参数,所以就没意识到它的存在。那么 MySQL 为什么要默认开启独立表空间呢,肯定有其原因。独立表空间的优点:

每个表都有自己独立的表空间。
每个表的数据和索引都在自己的表空间中。
可以实现单表在不同的数据库中移动。
空间可以回收
性能优势(除 insert 共享表空间略有优势外,其他方面独立表空间都表现更好)

退出移动版