Zen Cart对数据库的写入太多了。可能的解决方案?

时间:2011-04-16 20:28:18

标签: mysql io query-optimization zen-cart

我正在研究使用Zen Cart的东西。此时,从Zen Cart更改站点不是可选的。该网站大部分时间都可正常运行,但每周左右,该网站都会受到性能影响。与服务器提供商的讨论表明,几乎可以肯定是由于对数据库的写入过多导致i / o使用效率低下。数据库服务器与Web服务器不同,但如果数据库服务器没有足够的可用i / o,则该站点将受到影响(因为站点上的每个页面几乎都会进行数据库调用)。我正在寻找一个解决方案来解决这个问题,并且相信我找到了一些,但是想要一些反馈。

A)确定我是否可以修改zen cart以使用INSERT DELAY而不是INSERT,这样页面就不会挂起特定的查询。但是,Zen Cart是一个庞大的系统,并且进行大规模更改可能会产生负面影响(例如,DELAY语句不会在已使用LOCKED TABLES锁定的表上执行,或者后续页面无法正确反映由用户在之前的页面上,因为他们可以在没有完成先前查询的情况下加载。

B)部署混合托管解决方案,其中站点在云上运行,但数据库在具有多个SAS驱动器的服务器上运行,以提高写入速度,从而更快地为后续查询释放I / O.我想避免这种情况,因为它会大大增加成本。

有没有人遇到Zen-Cart这个问题?您对这些修复有何看法?您使用了哪些修复程序?

更新: 我最终使用数据挖掘机的查询缓存,这有很大帮助。我还发现zencart对getimagesize()的使用占了它的大部分加载时间,所以我正在创建一种从缓存中获取这些值的方法。大多数mysql查询滞后是由过多的读操作而不是写操作引起的。自从我实施了这些改变以来,情况有了很大的改善。我会将AJ的答案标记为正确,因为他确实回答了我原来的问题。

1 个答案:

答案 0 :(得分:2)

进行广泛的更改,例如INSERT DELAY而不是INSERT 可能是正确的解决方案,但并非所有查询都会导致问题。只有少数(甚至可能只有一个)对性能问题负责。

您应该尝试找出导致性能问题的特定查询/查询。与您的主机合作以启用slow query logging并让MySQL告诉您低效率的位置。如果没有一个运行缓慢,而且这只是一个简单的并发问题,IFF你嫁给了Zen Cart,那么你需要考虑加强你的基础设施。我喜欢你想要拥有单独的Web和数据库服务器。不要过分 - 如果他们现在都在一台服务器上运行,只需要第二台服务器并移动你的数据库。

进行增量更改并监控结果。一次改变太多的东西将使你很难确定你所看到的任何收益(希望不是损失)的原因。