Mysql MyISAM和InnoDB区别

在MySQL中创建表时,1)可以选择存储引擎。有几种不同的存储引擎,但最常用的是MyISAM和InnoDB,它们都是不同MySQL版本的默认存储引擎。如果在创建表时没有指定存储引擎,那么将使用MySQL版本的默认引擎。在5.5.5之前的MySQL版本中,MyISAM是默认值,但是在5.5.5之后的版本中,InnoDB是默认值。

主要区别

  1. InnoDB较新,MyISAM较老。
  2. InnoDB更复杂,而MyISAM更简单。
  3. InnoDB在数据完整性方面更加严格,而MyISAM比较松散。
  4. InnoDB为插入和更新实现了行级锁,而MyISAM实现了表级锁。
  5. InnoDB有事务,而MyISAM没有。
  6. InnoDB有外键和关系限制,而MyISAM没有。
  7. InnoDB有更好的崩溃恢复,而MyISAM在系统崩溃时无法恢复数据完整性。
  8. MyISAM有全文搜索索引,而InnoDB没有。

InnoDB

InnoDB的优点
  • InnoDB应该优先考虑数据完整性,因为它通过关系约束和事务来处理数据完整性。
  • 在写密集型(插入、更新)表中更快,因为它利用行级锁,并且只保留对正在插入或更新的同一行的更改。
InnoDB的缺点
  • 由于InnoDB必须处理表之间的不同关系,因此数据库管理员和方案创建者在设计比MyISAM更复杂的数据模型时需要花费更多的时间。
  • 消耗更多的系统资源,如RAM。事实上,很多人都建议在安装MySQL之后,如果不需要InnoDB引擎,就关闭它。
  • 没有全文索引

MyISAM

MyISAM的优点
  • 设计和创建更简单,因此更适合初学者。不必担心表之间的外部关系。
  • 由于结构更简单,服务器资源的成本更低,因此总体上比InnoDB更快。
  • 全文索引。
  • 特别适合读密集型(select)表。
    MyISAM的缺点
  • 没有数据完整性(例如,关系约束)检查,这会增加数据库管理员和应用程序开发人员的责任和开销。
  • 不支持在银行等关键数据应用程序中必不可少的事务。
  • 对于频繁插入或更新的表,其速度比InnoDB慢,因为对于任何插入或更新,整个表都是锁定的。

总结

InnoDB更适合需要频繁插入和更新的数据危急情况。另一方面,MyISAM在不太依赖于数据完整性的应用程序中执行得更好,这些应用程序通常只选择和显示数据。

如何在控制台中输出php的日志?
开源优秀项目推荐202003期