zoukankan      html  css  js  c++  java
  • innodb与myisam的对比总结

    innodb:

    1.事务操作
    2.外键操作
    3.行级锁,这是当有where条件的时候。没有where时,不知道在那一个范围进行搜索时,也是表锁.提供和 Oracle 一样的一致性的不加锁读取,能增加并发读的用户数量并提高性能,不会增加锁的数量。
    4.写的速度快,这是建立在索引的更新操作上

    5.InnoDB 的设计目标是处理大容量数据时最大化性能,它的 CPU 利用率是其他所有基于磁盘的关系数据库引擎中最有效率的,在技术上,InnoDB 是一套放在 MySQL 后台的完整数据库系统,InnoDB 在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。 InnoDB 把数据和索引存放在表空间里,可能包含多个文件,这与其它的不一样,举例来说,在 MyISAM 中,表被存放在单独的文件中。InnoDB 表的大小只受限于操作系统的文件大小,一般为 2 GB。  
    InnoDB所有的表都保存在同一个数据文件 ibdata1 中(也可能是多个文件,或者是独立的表空间文件),相对来说比较不好备份,免费的方案可以是拷贝数据文件、备份 binlog,或者用 mysqldump。  

     

    myisam:

    1.表级锁
    2.读取速度快
    3.索引压缩更好
    4.更好和更快的auto_increment处理

    COUNT() 在 MyISAM 表中会非常快,而在InnoDB 表下可能会很痛苦。而主键查询则在InnoDB下会相当相当的快,但需要小心的是如果我们的主键太长了也会导致性能问题。大批的inserts 语句在 MyISAM下会快一些,但是updates 在InnoDB 下会更快一些——尤其在并发量大的时候。

    myisam与innodb这两种引擎对索引的实现方式也不同。

    myiasm是使用B-树的结构来实现主码,非主码,唯一索引。

    innodb是使用B+树结构来实现主码,用B-树来实现非主码。

    使用两种的选择:如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,
    应该使用InnoDB表。如果执行大量的SELECT,MyISAM是更好的选择。若需要使用事务处理,
    但是原来的数据表使用的是myisam,就需要改为bdb或者innodb,这样基于myisam的程序,
    将类型改为innodb后,其程序不用改动…… 综上所述,任何一种表都不是万能的,只有恰当的针对业务类型来选择合适的表类型,才能
    最大的发挥MySQL的性能优势。

  • 相关阅读:
    Python面向对象:继承和多态
    Python面向对象:类、实例与访问限制
    Python正则表达式匹配猫眼电影HTML信息
    Git:从github上克隆、修改和更新项目
    Python:闭包
    JPA-映射-(@ManyToMany)双向多对多
    rownum详解
    java之yield(),sleep(),wait()区别详解
    springmvc<一>一种资源返回多种形式【ContentNegotiatingViewResolver】
    @RequestParam,@PathVariable,@ResponseBody,@RequestBody,@ModelAttribute学习
  • 原文地址:https://www.cnblogs.com/myblog1314/p/3118370.html
Copyright © 2011-2022 走看看