何时使用MyISAM和InnoDB? [重复]

这个问题在这里已有答案:

MyISAM的设计理念是,您的数据库查询的次数远远超过其更新的数据,因此它可以执行非常快速的读取操作 . 如果您的读写(插入|更新)比率小于15%,则使用MyISAM更好 .

InnoDB使用行级锁定,具有提交,回滚和崩溃恢复功能来保护用户数据 . 它支持事务和容错

以上MyISAM和InnobDB之间的差异是否正确? please guide if any other limitations are there for MYISAM and InnobDB. when should i use MyiSAM or when Innodb? 谢谢!

回答(2)

3 years ago

阅读Storage Engines .

MyISAM:

MySQL中的MyISAM存储引擎 .

  • 设计和创建更简单,因此对初学者更好 . 不用担心表之间的外来关系 .

  • 由于结构更简单,整体上比InnoDB更快,因此服务器资源的成本更低 . - 大部分不再是真的 .

  • 全文索引 . - InnoDB现在拥有它

  • 特别适合读取密集型(选择)表 . - 大部分不再是真的 .

  • 磁盘占用量比InnoDB低2到3倍 . - 从版本5.7开始,这可能是MyISAM的唯一真正优势 .

InnoDB:

MySQL中的InnoDB存储引擎 .

  • 支持事务(支持ACID属性) .

  • 行级锁定 . 与例如MyISAM相比,具有更细粒度的锁定机制可以提供更高的并发性 .

  • 外键约束 . 允许您让数据库确保数据库状态的完整性以及表之间的关系 .

  • InnoDB比MyISAM更能抵抗表损坏 .

  • 支持数据和索引的大缓冲池 . MyISAM密钥缓冲区仅用于索引 .

  • MyISAM停滞不前;所有未来的增强功能都将在InnoDB中进行 . 随着8.0版本的推出,这一点非常清楚 .

MyISAM Limitations:

  • 没有外键和级联删除/更新

  • 无交易完整性(ACID合规性)

  • 没有回滚功能

  • 4,284,867,296行限制(2 ^ 32) - 这是旧的默认值 . 可配置限制(对于许多版本)为2 ** 56字节 .

  • 每个表最多64个索引

InnoDB Limitations:

  • 没有全文索引(低于5.6的mysql版本)

  • 无法快速压缩,只读(5.5.14介绍 ROW_FORMAT=COMPRESSED

  • 您无法修复InnoDB表

For brief understanding read below links:

3 years ago

将MyISAM用于非常不重要的数据,或者如果您确实需要这些最小的性能优势 . 在MyISAM的每种情况下,读取性能都不是更好 .

我个人永远不会再使用MyISAM了 . 如果您需要更高的性能,请选择InnoDB并投入更多硬件 . 另一个想法是查看具有PostgreSQL等更多功能的数据库系统(如果适用) .

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