MySQL的innodb_file_per_table

本文探讨了MySQL中InnoDB引擎的独立表空间特性,即innodb_file_per_table选项的作用。独立表空间允许每张表的数据和索引存储在单独的.ibd文件中,提供了诸多优势,如单表跨数据库移动、空间回收及性能提升。自MySQL 5.6.6版本起,默认已启用此功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用Percona XtraBackup的部分备份功能时,发现官方文档的第一句话就是:

xtrabackup supports taking partial backups when the innodb_file_per_table option is enabled.

于是查询了一下MySQL的 innodb_file_per_table
innodb_file_per_table 顾名思义,首先是innoDb引擎的配置,其次表示每表一个文件。其实也就是独立表空间,与之对应的就是共享表空间。
打开MySQL的datadir,进入一个innoDb数据库的目录,会看到每张表都对应有两个文件:table_name.frmtable_name.ibd,这就是开启了独立表空间的效果。
查看是否开启

mysql> show variables like '%per_table%';

开启方法:
在my.cnf文件[mysqld]下设置

innodb_file_per_table=1

MySQL自5.6.6版本,就默认开启了这个参数,所以就没意识到它的存在。那么MySQL为什么要默认开启独立表空间呢,肯定有其原因。
独立表空间的优点:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值