与InnoDB相比,MyISAM的速度有多快?

时间:2009-12-28 17:00:34

标签: mysql

人们说InnoDB不像MyISAM那么快。但是慢多少?当然,正如风中的经验法则一样。我的意思是......它通常是MyISAM的0.5倍?甚至更糟?或者普通访问者在浏览MyISAM平台时是否认识到任何时间差异与InnoDB相同?

4 个答案:

答案 0 :(得分:7)

如果您注意到任何实际的现实世界差异,除非您运行的是一个非常大/资源密集的网站,否则我会感到非常惊讶。

有一些(尽管很旧)基准测试(例如here),但根据具体的使用模式,您的经验会明显不同。

答案 1 :(得分:3)

这可能是一个很大的不同,取决于您如何使用有问题的数据库。例如 - 在myisam表上运行时,select count(*)查询很便宜,但在innodb表上运行时(可能)非常慢。还有很多人没有为innodb性能配置他们的安装 - 特别是如果他们已经习惯了myisam,它在相当默认的mysql安装上表现得相当不错。

我的建议是运行自己的测试,通过几个顶级查询并针对myisam表和innodb版本运行它们。另请访问http://www.mysqlperformanceblog.com/,了解如何调整innodb以充分利用它。

答案 2 :(得分:1)

这是一个很大的概括,但你必须明白,当使用InnoDB时,db会不断地检查约束,实际的性能命中将根据它必须在插入和更新上进行多少次约束检查而有所不同。 您还应该考虑数据库上的查询分布,90%选择,10%插入/更新查询。一个10%的性能打击con插入,并不是特别大。现在,如果您的数据库是写密集型的,您可以考虑使用MyISAM。 请记住,MyISAM不符合ACID,因此您无法保证数据完整性,这意味着没有外键检查,也没有交易。

干杯

答案 3 :(得分:1)

根据您的负载模式,MyISAM可能根本不会更快。例如,InnoDB可以进行行级锁定,而MyISAM只支持表级锁定。这个特殊功能可以使InnoDB在负载下具有显着的优势,包括对同一组表的不同部分进行许多并发更新。

所以你无法真正概括。相反,你最能弄清楚你将拥有什么样的负荷,然后从这个角度研究这个话题。或者至少只是建立一个简单的模拟/基准,看看事情是如何发挥作用的。