开发者社区> 问答> 正文

MySQL 中 MyISAM 和 InnoDB 的区别?

已解决

MySQL 中 MyISAM 和 InnoDB 的区别

展开
收起
1118468786264222 2021-10-02 09:21:03 542 0
1 条回答
写回答
取消 提交回答
  • 网络规划设计师、敏捷专家、CISP、ITSS服务经理、ACA全科目、ACP4项、ACE、CBP、CDSP、CZTP等。拥有 PRINCE2 Foundation/Practitioner、CCSK、ITIL、ISO27001、PMP等多项国际认证。 专利5+、期刊10+、知识产权师。核心期刊审稿人。
    采纳回答

    您好,以下区别可供参考:

    存储结构 MyISAM:每个表在硬盘上都会存储成三个文件。 InnoDB:所有的表都保存在同一个数据文件中。
    存储空间: MyISAM:可被压缩,存储空间较小。 InnoDB:需要更多的内存和存储。
    可移植性、备份及恢复 MyISAM:数据是以文件的形式存储,在跨平台的数据转移中会很方便,在备份和恢复时可单独针对某个表进行操作。 InnoDB:数据是以文件的形式存储的,当时在数据量达到数十 G 的时候就比较麻烦。
    事务支持 MyISAM:不支持。 InnoDB:支持。
    AUTO_INCREMENT MyISAM:可以和其他字段一起建立联合索引。 InnoDB:必须包含只有该字段的索引。
    表锁差异 MyISAM:只支持表级锁。 InnoDB:支持行级锁。
    全文索引 MyISAM:支持 FULLTEXT 类型的全文索引。 InnoDB:不支持 FULLTEXT 类型的全文索引,但是可以使用 sphinx 插件支持全文索引,并且效果更好。
    表主键 MyISAM:允许没有任何索引和主键的表存在,索引都是保存行的地址。 InnoDB:如果没有设定主键或者非空唯一索引,就会自动生成一个6字节的主键(用户不可见),数据是主索引的一部分,附加索引保存的是主索引的值。
    CURD操作 MyISAM:如果执行大量的 SELECT,MyISAM 是更好的选择。 InnoDB:如果你的数据执行大量的 INSERT 或 UPDATE,出于性能方面的考虑,应该使用 InnoDB 表。
    外键 MyISAM:不支持。 InnoDB:支持。
    
    2021-10-02 10:24:06
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像