一个数据库已经有多达 25-30 个表并且都是MyISAM。这些表中的大多数都相互关联,这意味着许多查询使用 ID 上的连接并检索数据。
其中一个表包含7-10 百万条记录,如果我想执行搜索或更新甚至检索所有数据,它会变得很慢。现在我向我的老板提出了一个解决方案,说将表转换为 InnoDB 可能会提供更好的性能。
我还解释了 InnoDB 的好处:
由于我们无论如何都在键上连接多个表并且它们是相关的,因此最好使用外键并拥有可以避免Orphan Rows的关系数据库。我在其中一张大表中发现了大约10-15k孤立行,不得不手动删除它们。
支持事务,我们不时执行大更新,如果其中一个失败,我们必须用备份的表替换整个表并再次运行更新以确保所有查询都已执行。使用 InnoDB,如果查询 2 失败,我们可以恢复查询 1 的任何更改。
现在我从老板那里得到的回应是我需要证明 InnoDB 会比 MyISAM 运行得更快。我的问题是,以上两件事不会通过消除孤立行来提高应用程序本身的速度吗?
一般来说,MyISAM 比 InnoDB 快吗?
注意:使用 MySQL 5.5