MyISAM和InnoDB区别

主要区别

  • InnoDB支持事务,而MyISAM不支持事务,InnoDB中每条sql语句默认是一个事务,所以在使用的时候推荐在begin和commit之间添加多条语句,手动组装一个事务
  • InnoDB支持外键,而MyISAM不支持外键,如果将拥有外键的InnoDB表转成MyISAM会失败报错
  • InnoDB采用的是聚集索引,数据和索引是绑定在一起的,必须要有主键,主键索引的效率很高,通过辅助索引需要查询两次,通过辅助索引查询到主键索引,再用主键索引查询到数据,因此主键不能太大;而MyISAM是非聚集索引,数据和索引是分开的,索引里面保存的是指向数据的指针,主键索引和辅助索引是独立的
  • InnoDB不保存表的具体行数,使用select count时会全表扫描,速度很慢,但是MyISAM会保存表的具体行数,查询起来很快
  • InnoDB支持行级锁,行锁提高了多用户并发的操作性能,但是行锁只在WHEREd的主键是有效的,非主键的WHERE会锁全表;MyISAM支持表级锁,用户在操作myisam表时,select,update,delete,insert语句都会给表自动加锁,如果加锁以后的表满足insert并发的情况下,可以在表的尾部插入新的数据。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容