扩展编写密集型应用程序(LAMP,MySQL)(目录样式应用程序)

时间:2010-08-04 10:24:03

标签: php mysql performance replication scaling

我想知道是否有人因为文件导入而对编写密集型数据有经验。

主要要求是业务用户能够导入表示主表之间关系的数据。他们应该能够实时(尽可能多地)导出相同的内容。

设定:

  • 前端(php)应用程序在MASTER数据库上写入。
  • 复制设置      - 主数据库被复制到两个SLAVE数据库服务器。
  • 其中一个SLAVE服务器用作前端UI交互的“读取”数据库(重度查询)。
  • 相同的SLAVE服务器也用于根据已在前端预览的查询“导出”数据。 (很多JOIN表)。

主要的挑战是复制日志。用户对性能和用户不满意。即使已经处理了导入的文件,前端也无法获得数据。复制LAG是罪魁祸首。

转向NoSQL,即LONG Term目标。现在还想提高性能。顺便说一句,该应用程序在内部使用,但托管在一个着名的托管公司。用户数约为150个用户。

导入的数据大约为200k - 800k行。每行代表一行。

任何输入都将受到赞赏:)

2 个答案:

答案 0 :(得分:1)

有许多因素在改善MySQL复制延迟方面发挥作用。也许这个关于他们的DBA在Youtube上进行MySQL复制的播客可能会为你提供一些提示&指针:

http://itc.conversationsnetwork.org/shows/detail3299.html

希望这有帮助。

答案 1 :(得分:0)

@Wrikken,

(通过答案框回答)

是的,有很多“插入”和更新。应用程序使用临时表(即带有一些前缀的真实物理表)来插入初步数据。并且有很多INSERT INTO .. SELECT * FROM ..

这导致很多语句被复制到SLAVE,最终临时表被删除。我已经建议应该从要复制的表列表中排除这种类型的表,而不是使用INSERT INTO ... SELECT * FROM应用程序应该只是从应用程序上构建INSERT,UPDATE,DELETE语句中选择SELECT内存空间并执行SQL语句。它应该减少复制临时表相关语句的数量。