前言
MySQL的数据库其相关文件都会存放在安装目录下data文件夹下的同命文件夹中,不同的存储引擎创建的表其文件也不一样,下面来认识下这些数据库文件。
db.opt
用来记录该库的默认字符集编码和字符集排序规则用的。也就是说如果你创建数据库指定默认字符集和排序规则,那么后续创建的表如果没有指定字符集和排序规则,那么该新建的表将采用db.opt文件中指定的属性。
.frm
与表相关的元数据信息都存放在.frm文件中,主要是表结构的定义信息,不论什么存储引擎,每一个表都会有一个以表名命名的.frm文件。
.MYD和.MYI
.MYD:MY Data,是MyISAM存储引擎专用的用于存放MyISAM表的数据;
.MYI:MY Index,也是专属于MyISAM存储引擎的主要存放MyISAM表的索引相关信息。
.ibd和.ibdata
两者都是专属于InnoDB存储引擎的数据库文件。
当采用共享表空间时所有InnoDB表的数据均存放在.ibdata中,所以当表越来越多时,这个文件会变得很大;
相对应的.ibd就是采用独享表空间时InnoDB表的数据文件。
修改为独享表空间的方法是在my.ini配置文件中添加/修改此条:
Innodb_file_per_table=1
注意:笔者所用的MySQL-5.7是默认独享表空间的,不用特意在配置文件中添加。
当然,就算开启了独享表空间,.ibdata文件也会越来越大,因为这个文件里还存储了:
- 变更缓冲区