该题应该从下面四个维度来回答
- 事务
- 外键
- 索引
- count
- 日志
- 锁
- 主键
- 存储文件
Innodb 支持事务,MyISAM 不支持
Innodb 支持外键,MyISAM 不支持
InnoDB 是聚集索引,MyISAM 是非聚集索引
InnoDB 是聚集索引,使用B+Tree作为索引结构,数据文件是和索引绑在一起的,必须要有主键。MyISAM 是非聚集索引,也是使用B+Tree作为索引结构,索引和数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。`
InnoDB 不保存表的具体行数,MyISAM 用一个变量保存了整个表的行数
Innodb 有 redolog 日志文件,MyISAM 没有
Innodb存储文件有frm、ibd,而Myisam是frm、MYD、MYI
InnoDB 支持表、行锁,而 MyISAM 支持表级锁
InnoDB 必须有唯一索引(主键),如果没有指定的话 InnoDB 会自己生成一个隐藏列Row_id来充当默认主键,MyISAM 可以没有