Diff:
1、事务:innodb支持;myisam不支持。innodb默认每条sql为一个事务,这样操作会影响性能,所以建议自己根据业务,使用“begin……commit”来自己管理事务;
2、外键:innodb支持;myisam不支持。注意:该特性会导致innodb表向myisam转失败;
3、索引:innodb是聚集索引;myisam是非聚集索引。
具体的参考文章:
4、行数:innodb不记录行数;myisam记录行数。原因:innodb是事务隔离的,不同的事务看到的数据是有差别的。
5、锁级别:innodb支持表、行(默认)锁;myisam支持表锁。注意:innodb的行锁是在索引上实现的,不是锁在具体的物理数据行上的。即如果索引没有命中索引,那么就只能使用表锁了。
where(使用场景)
1、事务要求:innnodb支持事务,myisam不支持;
2、读写:绝大多数是读操作,可以选择myisam;如果有读也有写,选择innodb;
3、恢复速度:mysam崩溃后,恢复速度非常慢;
4、默认选择innodb:如果前面几种还无法决定选什么,可以直接使用innodb。原因:mysql 5.5后默认使用innodb数据引擎了。