Mysql 我应该将数据库从MyISAM更改为InnoDB吗?(AWS通知)

Mysql 我应该将数据库从MyISAM更改为InnoDB吗?(AWS通知),mysql,amazon-web-services,Mysql,Amazon Web Services,我正在开发一个浏览器应用程序,通过php站点连接到几个MySQL数据库。这些数据库设置在单个AWS RDS实例上。当我建立这些数据库时,我并没有很好地了解不同的数据库引擎。在阅读了不同的类型后,我决定将InnoDB用于低IOPS需求,而MyISAM用于高IOPS需求,因为我了解到它在某些任务中速度更快 Amazon Web Services告诉我: DB实例test-1包含尚未迁移到InnoDB的MyISAM表。这些表可能会影响您执行时间点恢复的能力。考虑将这些表转换为NYNDB。请参阅 我应该

我正在开发一个浏览器应用程序,通过php站点连接到几个MySQL数据库。这些数据库设置在单个AWS RDS实例上。当我建立这些数据库时,我并没有很好地了解不同的数据库引擎。在阅读了不同的类型后,我决定将InnoDB用于低IOPS需求,而MyISAM用于高IOPS需求,因为我了解到它在某些任务中速度更快

Amazon Web Services告诉我:

DB实例test-1包含尚未迁移到InnoDB的MyISAM表。这些表可能会影响您执行时间点恢复的能力。考虑将这些表转换为NYNDB。请参阅


我应该使用InnoDB重新创建MyISAM数据库吗?

有关MyISAM比InnoDB快的比喻是对2000年代中期流行的代码的保留

对于大多数类型的查询,MyISAM不再比InnoDB快。看看这个博客中2007年的基准:

从那时起,InnoDB变得更好、更快、更可靠。MyISAM尚未开发

更新:在MySQL 8.0中,甚至系统表都已转换为InnoDB。显然有逐步淘汰MyISAM的意图。我预计它将被弃用,然后在MySQL的未来版本中被删除(但我不能说多少年后会如此)

在一些边缘情况下,MyISAM可能会更快,比如表格扫描。但您真的不应该为表扫描优化数据库。您应该创建正确的索引以避免表扫描

2018年2月更新:MyISAM最近修复了CPU故障,性能又受到了40%的影响,这影响了表扫描。假设您负责并修补您的系统以修复熔毁漏洞,MyISAM现在是一项性能责任。请参阅使用修补程序对MyISAM性能的当前测试:

但最重要的是InnoDB支持ACID行为,而MyISAM不支持ACID的四种特性中的任何一种。看看我对你的回答


不支持ACID不仅仅是一个学术观点。它转化为更新过程中的表锁和备份过程中的全局锁。

只有当您需要较大的数据吞吐量时,MyISAM的速度才真正相关-对于大多数执行典型web应用程序工作负载的CRUD应用程序来说,InnoDB具有更强的弹性和更大的功能集,因此使用它会更好。