myisam没有事务支持,它的连续的插入和查询速度都比Innodb快很多,但是如果需要插入和查询穿插着来,那么myisam是表锁,innodb是行锁,innodb的并发性好,并且innodb是支持事务的
innodb在插入数据的时候需要维护表级缓存,myisam只需要维护索引(文件级offset定位数据行,不需要缓存表)
innodb在插入和查询的时候需要维护mvcc
innodb在插入时维护主外键关系等
innodb因为提供了事务支持和表级锁的支持,维护成本比myisam高很多
也就是说,如果读写,一半一半,平均,且考虑并发和事务的要求使用innodb
如果读多写少,或者写多读少,比如题库表(读多写少),或者日志表(写多读少),而且不是需要事务的情况下(题库修改很少,极少出现事务并发问题,新增也不多,但是会有大量的读操作,新增的时候加入程序级别的锁,防止并发插入,读的时候,直接读,myisam的表读锁之间是共享的),这个时候就可以考虑使用myisam来增强数据库的读写性能
还有就是目前的缓存技术的支持,innodb利用缓存之后,读写能力都有了很大的提升,如果不是非要走数据库查询的话,优化缓存,并利用好二级缓存也是个不错的策略。