- 数据的存储结构不同:
MyISAM会在磁盘上存储三个文件:表的定义(.frm),数据文件(.MYD)和索引文件(.MYI)。
InnoDB会在磁盘上存储两个文件:表的定义(.frm),数据和索引文件(.ibd)。 - 存储空间大小不同:
MyISAM存储空间相对较小,而InnoDB需要更多的存储空间。 - 对事务的支持不同:
MyISAM多用于查询比较多的表,所以不支持事务;而InnoDB多用于增、删、改比较频繁的表,其支持事务。 - 对锁的支持程度不同:
MyISAM只支持表锁,上锁时需要锁定整个表格,效率会偏低;而InnoDB支持行锁,只需要锁定某一行,所以效率会高一些。 - 外键支持不同:
MyISAM不支持外键,而InnoDB支持外键。 - 主键定义不同:
MyISAM可以不定义主键,如果定义了主键,则会是主键索引;而InnoDB必须要有主键,如果没有定义主键,系统会自动创建一个隐藏的6byte的int型索引。