MyISAM与InnoDB两者之间区别与选择

1、MyISAM不支持事务,InnoDB是事务类型的存储引擎

2,MyISAM只支持表级锁,它不会出现死锁问题,而InnoDB支持行级锁和表级锁默认为行级锁,行级锁是Mysql粒度最小的一种锁,它能大大的减少数据库操作的冲突,但是粒度越小实现成本也越大。

3、MyISAM引擎不支持外键,InnoDB支持外键

4,如果执行大量的select,insert MyISAM比较适合。

 如果有大量的update和insert,建议使用InnoDB,特别是针对多个并发和QPS较高的情况。

5、对于count()查询来说MyISAM更有优势

因为MyISAM存储了表中的行数记录,执行SELECT COUNT() 的时候可以直接获取到结果,而InnoDB需要扫描全部数据后得到结果。

但是注意一点:对于带有WHERE 条件的 SELECT COUNT()语句两种引擎的表执行过程是一样的,都需要扫描全部数据后得到结果

7、MyISAM支持全文索引(FULLTEXT),InnoDB不支持

8、MyISAM引擎的表的查询、更新、插入的效率要比InnoDB高。

场景选择

MyISAM

  • 不需要事务支持(不支持)
  • 并发相对较低(锁定机制问题)
  • 数据修改相对较少(阻塞问题),以读为主
  • 数据一致性要求不是非常高
  • InnoDB 
  • 需要事务支持(具有较好的事务特性)
  • 行级锁定对高并发有很好的适应能力,但需要确保查询是通过索引完成
  • 数据更新较为频繁的场景
  • 数据一致性要求较高
  • 硬件设备内存较大,可以利用InnoDB较好的缓存能力来提高内存利用率,尽可能减少磁盘 IO
posted @ 2020-09-05 09:33  小--z  阅读(161)  评论(0)    收藏  举报