MySQL 的数据存放在哪个文件?
MySQL 的数据都是保存在磁盘的,MySQL 存储的行为是由存储引擎实现的,以下以 InnoDB 存储引擎展开讨论。
创建一个名为test 的 database,该database 里有一张名为 user 数据库表。默认 /var/lib/mysql/test 目录下共有三个文件:
- db.opt,用来存储当前数据库的默认字符集和字符校验规则。
- user.frm ,user 的表结构会保存在这个文件。在 MySQL 中建立一张表都会生成一个.frm 文件,该文件是用来保存每个表的元数据信息的,主要包含表结构定义。
- user.ibd,user 的表数据会保存在这个文件。
- 表数据既可以存在共享表空间文件(文件名:ibdata1)里,也可以存放在独占表空间文件(文件名:表名字.ibd)。
- 这个行为是由参数 innodb_file_per_table 控制的,若设置了参数 innodb_file_per_table 为 1,则会将存储的数据、索引等信息单独存储在一个独占表空间。
- 从 MySQL 5.6.6 版本开始,它的默认值就是 1 了,因此从这个版本之后, MySQL 中每一张表的数据都存放在一个独立的 .ibd 文件。