为什么MySQL的Innodb类型数据库只有一个.frm文件,而MyISAM数据库需要多MYD MYI两个文件?

为什么MySQL的Innodb类型数据库只有一个.frm文件,而MyISAM数据库需要多MYD MYI两个文件?

这是由不同的存储结构造成的,Innodb和MyISAM都使用.frm文件来存储表结构,如果表里有数据,一般还会有个.ibd文件,用于存储表数据及索引等;MyISAM同样使用.frm存储表结构,不过使用.myd和.myi分别存储表数据和表索引。也就是说MyISAM不是多了文件,而是这两者文件根本就不一样。

这是两个不同的引擎,可能是由不同的团队开发的,所以可能会有些差异的,不必太纠结。

感谢大家的回答,补充下:
在innodb引擎中,
frm文件:保存了每个表的元数据,包括表结构的定义等;

.ibd文件:InnoDB引擎开启了独立表空间(my.ini中配置innodb_file_per_table = 1)产生的存放该表的数据和索引的文件。
在myisam引擎中是myd和myi两个文件用来保存数据和索引