MySQL的innodb_file_per_table
在使用Percona XtraBackup的部分備份功能時,發現官方文件的第一句話就是:
xtrabackup supports taking partial backups when the innodb_file_per_table option is enabled.
innodb_file_per_table
innodb_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共享表空間略有優勢外,其他方面獨立表空間都表現更好)