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
浙公网安备 33010602011771号