5

我正在使用从网站获取 100 个项目并将其插入数据库的代码,如果项目存在,它会更新该记录。它每分钟作为一个 cron 作业运行。它运行多达 50000 种产品。

脚本运行良好,产品导入成功。现在的问题是服务器和 MySql 负载。我的服务器支持人员说它占用了将近 50% 的资源,他们需要禁用该脚本。

我尝试谷歌检查解决方案,发现加载文件比 mysql_query 插入和更新更好。因此,我计划将所有查询写入服务器上的 txt 文件中,并在完成后使用加载文件将其导入 db。

这是一个好方法吗?或者它也承担相同的服务器负载?在继续之前,我想知道专家的决定。请帮忙。谢谢

4

1 回答 1

1

了解场景中的所有变量会很有帮助。显然,您不想透露有关您的设置的任何敏感信息,但是如果不了解您的情况的更多参数,则很难给出适当的答案。每当出现 MySQL 性能问题时,您都必须评估您所做的一切,而不仅仅是您编写的每分钟在 cron 上运行的脚本(乍一看,这本身似乎可以优化或重构为以不同的方式运行)。一些很高兴知道的事情是: - 您在哪种类型的托管环境中,即共享、云等...?- 您的网站每天、每小时、每分钟等获得什么样的流量... ? - 您正在运行多少台 Web 服务器?- 您运行了多少个数据库服务器?有多少主人和奴隶?- 你有负载平衡吗?- 您是否使用任何类型的缓存,例如 Memcache?

了解您为什么每分钟进行如此多的更新也会有所帮助?如果您别无选择,那么您可能需要考虑将资源专用于该过程,并在半夜每天运行一次 cron 以同步您的数据库。

这一切都可能是多余的,如果您的数据库表正确规范化并且您的索引设置正确,您将能够获得很多性能。一个非常普遍的经验法则是确保在“WHERE”子句中查询的数据库中的列上有索引。

希望这会有所帮助。

于 2013-04-17T21:46:05.873 回答