何时使用MyISAM和InnoDB?

MyISAM的devise思想是,你的数据库被查询得远远超过它的更新,因此它执行非常快的读取操作。 如果您的读写(插入|更新)比率小于15%,则最好使用MyISAM。

InnoDB使用行级locking,提交,回滚和崩溃恢复function来保护用户数据。 它支持事务和容错

MyISAM和InnobDB之间的上述差异是否正确? 如果MYISAM和InnobDB有任何其他限制,请指导。 我应该何时使用MyiSAM或Innodb? 谢谢!

阅读关于存储引擎

MyISAM数据:

MySQL中的MyISAM存储引擎。

  • 更简单的devise和创build,从而更好地为初学者。 不用担心表格之间的对外关系。
  • 整体上比InnoDB更快,因为结构更简单,服务器资源成本更低。 – 大部分不再是真的。
  • 全文索引。 – InnoDB现在拥有它
  • 特别适合读取密集型(select)表格。 – 大部分不再是真的。
  • 磁盘占用空间比InnoDBless2至3倍。 – 从5.7版本开始,这也许是MyISAM的唯一真正的优势。

InnoDB的:

MySQL中的InnoDB存储引擎。

  • 支持交易(为您提供对ACID财产的支持)。
  • 行级locking。 与MyISAM相比,拥有更细粒度的locking机制会为您提供更高的并发性。
  • 外键约束。 允许您让数据库确保数据库状态的完整性以及表之间的关系。
  • InnoDB比MyISAM更能抵抗表腐败。
  • 支持数据和索引的大型缓冲池。 MyISAM密钥缓冲区仅用于索引。
  • MyISAM停滞不前 所有未来的增强将在InnoDB中。 从8.0版本开始,这一点已经非常清楚了。

MyISAM限制:

  • 没有外键和级联删除/更新
  • 没有交易完整性(符合ACID)
  • 没有回滚能力
  • 4,284,867,296行限制(2 ^ 32) – 这是旧的默认值 。 可configuration的限制(对于许多版本)是2 ** 56字节。
  • 每个表最多有64个索引

InnoDB限制:

  • 没有全文索引(低于5.6的mysql版本)
  • 无法压缩为快速,只读(5.5.14引入了ROW_FORMAT=COMPRESSED
  • 你不能修复一个InnoDB表

为了简要理解,请阅读以下链接

  1. MySQL引擎:InnoDB与MyISAM – 比较优缺点
  2. MySQL引擎:MyISAM与InnoDB
  3. InnoDB和MyISAM的主要区别是什么?
  4. MyISAM与InnoDB
  5. MyISAM和InnoDB有什么区别?
  6. MySql:MyISAM与Inno DB

使用MyISAM非常不重要的数据,或者如果你真的需要这些最小的性能优势。 MyISAM的读取性能在每种情况下都不会更好。

我个人从不再使用MyISAM。 如果你需要更多的性能,selectInnoDB并且多投一些硬件。 另一个想法是在适用的情况下查看具有更多function的数据库系统,如PostgreSQL。

编辑 :对于读取性能,这个链接显示innoDB通常实际上不比MyISAM慢: http ://www.mysqlperformanceblog.com/2007/01/08/innodb-vs-myisam-vs-falcon-benchmarks-part 1 /