MySQL 中 MyISAM 和 InnoDB 的区别
您好,以下区别可供参考:
存储结构 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:支持。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。