zoukankan      html  css  js  c++  java
  • 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两者之间区别与选择,详细总结,性能对比

  • 相关阅读:
    openldap
    Java实现 洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is He…
    Java实现 洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is He…
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P1567 统计天数
    Java实现 洛谷 P1567 统计天数
  • 原文地址:https://www.cnblogs.com/silyvin/p/9106649.html
Copyright © 2011-2022 走看看