概述
.ibd 文件包含表数据和索引。 它存储了实际的数据行以及为了快速访问数据而构建的索引。 .frm 文件在 MySQL 8.0 中已经被废弃,表结构信息不再存储在 .frm 文件中。
更准确地说:
MySQL 8.0 之前:
- .frm 文件存储表结构定义(元数据),例如列名、数据类型、约束等。
- .ibd 文件存储表数据和索引(如果使用 InnoDB 存储引擎并且启用了 innodb_file_per_table 选项)。
- .MYD 和 .MYI 文件用于 MyISAM 存储引擎,分别存储数据和索引。
MySQL 8.0 及之后:
.frm 文件被废弃。 表结构信息(元数据)存储在数据字典中,数据字典是一组系统表,存储在 mysql 数据库的 ibdata1 文件中(系统表空间)。
.ibd 文件仍然存储表数据和索引(如果使用 InnoDB 存储引擎并且启用了 innodb_file_per_table 选项,这是默认设置)。
总结:
在 MySQL 8.0 中,.ibd 文件是主要的表数据文件,包含了表数据和索引。.frm 文件不再用于存储表结构,表结构信息存储在数据字典中。
为什么还可能看到 .frm 文件?
尽管 .frm 文件在 MySQL 8.0 中被废弃,但在以下情况下你可能仍然会看到它们:
- 从旧版本升级而来: 如果你的数据库是从 MySQL 8.0 之前的版本升级而来的,那么旧的 .frm 文件可能仍然存在,但它们不再被 MySQL 使用。
- 某些工具或操作: 一些第三方工具或特定的操作可能会创建 .frm 文件,例如使用 mysqlfrm 工具。
- 非 InnoDB 表: 对于非 InnoDB 表(例如 MyISAM),仍然可能使用 .frm 文件。
因此,在处理 MySQL 8.0 的数据文件时,你需要重点关注 .ibd 文件和数据字典。
