MySql中每个表存储引擎都有自己独有的文件,InnoDB存储引擎相关的文件主要包括:重做日志文件,表空间文件。
1、表空间文件
InnoDB采用将存储的数据按表空间(tablespace)进行存放的设计。在默认配置下会有一个初始大小为10MB,名为ibdata1的文件。该文件就是默认的表空间文件(tablespace file),用户可以通过参数innodb_data_file_path对其进行设置.
mysql> show variables like 'innodb_data_file_path';
+-----------------------+------------------------+
| Variable_name | Value |
+-----------------------+------------------------+
| innodb_data_file_path | ibdata1:10M:autoextend |
+-----------------------+------------------------+
1 row in set (0.00 sec)
用户可以通过多个文件组成一个表空间,同时制定文件的属性。
innodb_data_file_path=/db/ibdata1:200M;/dr2/db/ibdata2:2000M:autoextend
这里/db/ibdata1和/dr2/db/ibdata2两个文件用来组成表空间。若这两个文件位于不同的磁盘上,磁盘的负载可能被平均,因此可以提高数据库的整体性能。同时,两个文件的文件名后都跟了属性,表示文件ibdata1大小为200M, ibdata2大小为20000M,如果用完了这2000M,该文件可以自动增长(autoextend)。
设置innodb_data_file_path参数后,所有基于InnoDB存储引擎的表的数据都会记录到该共享表空间中。若设置了擦拭农户innodb_file_per_table,则用户可以将每个基于InnoDB存储引擎的表产生一个独立表空间。
独立表空间的命名规则为:表名.ibd。通过这样的方式,用户不用将所有数据都存放于默认的表空间中。
这些单独的表空间仅仅存储该表的数据、索引和插入缓冲BITMAP等信息,其余信息还是存放在默认的表空间中。
默认该参数是关闭的。
mysql> show variables like 'innodb_file_per_table';
+-----------------------+-------+
| Variable_name |