何时使用MyISAM和InnoDB?

aja*_*jay 126 mysql database database-schema

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

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

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

Ton*_*ark 224

阅读有关存储引擎的信息.

MyISAM数据:

MySQL中的MyISAM存储引擎.

  • 设计和创建更简单,因此对初学者更好.不用担心表之间的外来关系.
  • 由于结构更简单,整体上比InnoDB更快,因此服务器资源的成本更低. - 大部分不再是真的.
  • 全文索引. - InnoDB现在拥有它
  • 特别适合读取密集型(选择)表. - 大部分不再是真的.
  • 磁盘占用量比InnoDB低2到3倍. - 从版本5.7开始,这可能是MyISAM的唯一真正优势.

InnoDB的:

MySQL中的InnoDB存储引擎.

  • 支持交易(为您提供ACID属性的支持).
  • 行级锁定.与例如MyISAM相比,具有更细粒度的锁定机制可以提供更高的并发性.
  • 外键约束.允许您让数据库确保数据库状态的完整性以及表之间的关系.
  • InnoDB比MyISAM更能抵抗表损坏.
  • 支持数据和索引的大缓冲池.MyISAM密钥缓冲区仅用于索引.
  • MyISAM停滞不前; 所有未来的增强功能都将在InnoDB中进行.随着8.0版本的推出,这一点非常清楚.

MyISAM限制:

  • 没有外键和级联删除/更新
  • 没有交易完整性(ACID合规性)
  • 没有回滚功能
  • 行限制为4,284,867,296(2 ^ 32) - 这是旧的默认值.可配置限制(对于许多版本)为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!

  • MySQL 5.6中的InnoDB提供了全文索引 (11认同)

Arg*_*man 19

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

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

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

  • "将MyISAM用于非常不重要的数据"夸大了可靠性差异,特别是在使用现代日记文件系统时.更常见的观点是,MyISAM读取速度更快.我无法弄清楚为什么Percona博客的结果是一个例外.我们在两个引擎的表格上进行了实验,发现MyISAM读取的速度几乎是InnoDB的两倍.在可能的情况下,最好使用您自己的真实数据和环境进行测试. (7认同)
  • 博客条目的链接现在大约有10年的历史. (5认同)