我已经阅读了一些关于Mysql的材料,Myysql性能博客和一些书籍。
据说,如果你有一个主要基于阅读的应用程序,你应该使用Myisam,因为它比Innodb更好。此外,Myisam的非联接查询速度更快。
为什么当它支持表锁(我想只针对写),而Innodb有行级锁时,它应该能为读写提供更好的性能。
我只是想知道,为什么所有的阅读材料都说,如果你的应用程序比95%> read更快,那么Myisam的读取速度会更快,但没有对此提供任何解释。
我希望有知识的人能在不否决和结束问题的情况下回答这个问题。
发布于 2011-05-02 02:25:34
表级锁的检查速度更快,但是当它们存在时,它们会阻塞对表的所有其他访问。如果你主要是在阅读,那么你想要得到最快的“我没有被锁定”的检查。
行级锁定允许在表上同时执行其他操作,但是它们在实现和检查方面的空间/时间开销更大。
因此,如果你在桌子上进行95%+读取(对于大多数web应用来说是典型的),那么MyISAM就赢了。有些表(如会话表或用户跟踪表)的写操作和读操作一样多,每次更新时锁定整个表可能会使活动站点的爬行速度变慢。
尝试通过使用各种表的索引卡创建一个“数据库”来测试这一点,并模拟每次有一个访问者访问站点时会发生什么。然后在5、10或50个访问者同时点击代码的情况下尝试它。很快就会发现,会话表上的表级锁是show stopper。
https://stackoverflow.com/questions/5850324
复制相似问题