Mysql MyISAM和InnoDB区别
嘻嘻发布于2020-03-15
最后更新于2020年2月29日
浏览在MySQL中创建表时,1)可以选择存储引擎。有几种不同的存储引擎,但最常用的是MyISAM和InnoDB,它们都是不同MySQL版本的默认存储引擎。如果在创建表时没有指定存储引擎,那么将使用MySQL版本的默认引擎。在5.5.5之前的MySQL版本中,MyISAM是默认值,但是在5.5.5之后的版本中,InnoDB是默认值。
主要区别
- InnoDB较新,MyISAM较老。
- InnoDB更复杂,而MyISAM更简单。
- InnoDB在数据完整性方面更加严格,而MyISAM比较松散。
- InnoDB为插入和更新实现了行级锁,而MyISAM实现了表级锁。
- InnoDB有事务,而MyISAM没有。
- InnoDB有外键和关系限制,而MyISAM没有。
- InnoDB有更好的崩溃恢复,而MyISAM在系统崩溃时无法恢复数据完整性。
- MyISAM有全文搜索索引,而InnoDB没有。
InnoDB
InnoDB的优点
- InnoDB应该优先考虑数据完整性,因为它通过关系约束和事务来处理数据完整性。
- 在写密集型(插入、更新)表中更快,因为它利用行级锁,并且只保留对正在插入或更新的同一行的更改。
InnoDB的缺点
- 由于InnoDB必须处理表之间的不同关系,因此数据库管理员和方案创建者在设计比MyISAM更复杂的数据模型时需要花费更多的时间。
- 消耗更多的系统资源,如RAM。事实上,很多人都建议在安装MySQL之后,如果不需要InnoDB引擎,就关闭它。
- 没有全文索引
MyISAM
MyISAM的优点
- 设计和创建更简单,因此更适合初学者。不必担心表之间的外部关系。
- 由于结构更简单,服务器资源的成本更低,因此总体上比InnoDB更快。
- 全文索引。
- 特别适合读密集型(select)表。
MyISAM的缺点
- 没有数据完整性(例如,关系约束)检查,这会增加数据库管理员和应用程序开发人员的责任和开销。
- 不支持在银行等关键数据应用程序中必不可少的事务。
- 对于频繁插入或更新的表,其速度比InnoDB慢,因为对于任何插入或更新,整个表都是锁定的。
总结
InnoDB更适合需要频繁插入和更新的数据危急情况。另一方面,MyISAM在不太依赖于数据完整性的应用程序中执行得更好,这些应用程序通常只选择和显示数据。