zoukankan      html  css  js  c++  java
  • MyIsAm和 InnoDB 的 区别? 如何去选择?

    区别:

      1.InnoDB支持事务,MyISAM不支持事务,InnoDB会为每条语句默认封装成事务支持,当多条语句执行时,可以放到 begin和commit中,进行执行;

      2.InnoDB支持外键,MyISAM不支持外键;

      3.InnoDB是聚焦索引,而MyISAM是非聚焦索引,但是它们都是B+ tree 数据结构

        不同的是,InnoDB中必须要有主键,数据文件和索引绑定在一起,通过主键索引查询数据,极大的提升了查询效率.而辅助索引则需要2次查询,首先查询到主键索引后,再查询数据

        而MyISAM中则是,数据结构和索引是分开的,索引保持的是数据文件的指针.

      4.InnoDB不保存表的具体行数,所以需要去进行全表扫描,而MyISAM是使用一个变量去保存的,所以读取的时候会非常快.

      5.InnoDB不支持全文索引,而MyISAM支持全文检索,在涉及全文索引领域上MyISAM,效率更高.PS:Mysql5.7以后支持全文索引

      6.MyISAM支持压缩表.

      7.InnoDB支持表、行(默认)级锁,而MyISAM支持表锁

        InnoDB的行锁是实现在索引上的,而不是锁在物理行记录上. 如果没有命中索引的话,也会退化成表锁

      8.InnoDB表必须有唯一索引(如主键)(用户没有指定的话会自己找/生产一个隐藏Row_Id来充当默认主键),而MyIsAM则没有

      9.InnoDB存储文件有frm、ibd,而MyISAM是frm、MYD、MYI.

    如何选择:

      1.是否要支持事务,如果要请选择InnoDB,如果不需要可以使用MyISAM.

      2.如果表中绝大多数都只是读查询,可以考虑MyISAM,如果既有读也有写,使用InnoDB

      3.系统崩溃后,MyISAM恢复起来更困难,是否接受;

      4.MySQL5.5版本开始InnoDB已经成为MySQL的默认引擎(之前是MyISAM).

        如果你不知道如何选择,选择InnoDB

  • 相关阅读:
    跟老婆学习软件工程一:瀑布模型
    我的手机需求
    我的BB8820手机
    WordPress中query_posts函数和WPpagenavi插件冲突的解决方法
    HomeZZ注册推介码
    分享:世界机场代码(ICAO)[带经纬度]
    Silverlight学习笔记十七BingMap(三)之地图的地区标识
    从真正的项目中学习Silverlight(MSN Entertainment项目源码下载)
    Silverlight的十几种图片展示炫酷效果(附源码)
    Silverlight水的微波凌步效果
  • 原文地址:https://www.cnblogs.com/zayr/p/14335057.html
Copyright © 2011-2022 走看看