概述

.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 文件和数据字典。