为什么Myisam读取速度更快(主要是读取应用程序)和简单查询?

时间:2011-05-01 18:11:41

标签: mysql myisam

我一直在阅读有关Mysql,Myysql性能博客和一些书籍的一些资料。

据说,如果你有一个基于读取的应用程序,你应该使用Myisam,因为它比Innodb更好。对于Myisam,非连接查询也更快。

为什么如此支持表锁(仅适用于我认为的写操作),其中Innodb具有行级锁,因此它应该为读写提供更好的性能..

我只是想知道这一点,为什么所有的阅读材料都表明,如果你的应用程序超过95%,那么Myisam的读取速度会更快。阅读,但没有提供相同的解释。

我希望有知识渊博的人能够在没有投票和结束问题的情况下回答

1 个答案:

答案 0 :(得分:7)

表级锁的检查速度更快,但是当它们存在时,它们会阻止对表的所有其他访问。如果你主要是阅读,那么你想要最快的“我没有锁定”检查你可以得到。

行级锁定允许在桌面上同时进行其他操作,但是它们在实现空间/时间方面更加昂贵。检查。

因此,如果您在桌面上执行95%以上的读取(对于大多数Web应用程序而言是典型的),那么MyISAM将获胜。某些表(例如会话表或用户跟踪表)具有与读取一样多的写入,并且为每次更新锁定整个表可能会使活动站点变慢为爬行。

尝试通过使用各种表的索引卡创建“数据库”来测试这一点,并模拟当一个访问者一次通过该站点时会发生什么。然后尝试与5,10或50位访问者同时访问代码。很快就会发现会话表上的表级锁是show stop。