MyISAM和InnoDB的主要区别和应用场景

http://blog.csdn.net/aaa123524457/article/details/54375341

 

主要区别:

 

  • 1).[事务]MyISAM是非事务安全型的,而InnoDB是事务安全型的,默认开启自动提交,宜合并事务,一同提交,减小数据库多次提交导致的开销,大大提高性能。
  • 2).[锁]MyISAM锁的粒度是表级,而InnoDB支持行级锁定。
  • 3).[全文索引]MyISAM支持全文类型索引,而InnoDB不支持全文索引。
  • 4).[查询效率]MyISAM相对简单,所以在效率上要优于InnoDB,小型应用可以考虑使用MyISAM。
  • 5).[外健]MyISAM不支持外健,InnoDB支持。
  • 6).[count]MyISAM保有表的总行数,InnoDB只能遍历。
  • 6).MyISAM表是保存成文件的形式,在跨平台的数据转移中使用MyISAM存储会省去不少的麻烦。
  • 7).InnoDB表比MyISAM表更安全,可以在保证数据不会丢失的情况下,切换非事务表到事务表(alter table tablename type=innodb)。
  • 8)MyIsam索引和数据分离,InnoDB在一起,MyIsam天生非聚簇索引,最多有一个unique的性质,InnoDB的数据文件本身就是主键索引文件,这样的索引被称为“聚簇索引”
  • 具体见:https://blog.csdn.net/silyvin/article/details/80140153

9)InnoDB提供多版本数据支持  https://blog.csdn.net/zhangliangzi/article/details/51379274,MyIsam不支持

10)两者都仅支持B+树索引,不支持hash索引


应用场景:

  • 1).MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。如果应用中需要执行大量的SELECT查询,那么MyISAM是更好的选择。
  • 2).InnoDB用于事务处理应用程序,具有众多特性,包括ACID事务支持。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能

 

 

具体问题具体分析,可遵循以下问题:

 

◆你的数据库有外键吗?   

◆你需要事务支持吗?   

◆你需要全文索引吗?   

◆你经常使用什么样的查询模式?在写多读少的应用中还是Innodb插入性能更稳定,在并发情况下也能基本,如果是对读取速度要求比较快的应用还是选MyISAM。   

◆你的数据有多大?   大尺寸倾向于innodb,因为事务日志,故障恢复

 

以上部分文字参考:文内还有一些性能的实践测试

MyISAM与InnoDB两者之间区别与选择,详细总结,性能对比

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值