0

我的任务是编写一个脚本(或者更好的是,一个守护进程),它必须做几件事:

  1. 从多个输入 xml 提要中抓取最新数据。暂时有 15-20 个提要,但我相信未来可能会增加到 50 个。Feed 大小在 500 KB 和 5 MB 之间变化(很可能不会超过 10 MB)。由于提要不是标准化格式,因此来自给定源的每个提要都必须有一个提要解析器,以便将数据统一为单一的通用格式。
  2. 将数据存储到数据库中,以便从提要中提取的每个数据单元仍然可用。
  3. 由于数据会随时间变化(例如,信息至少每小时更新一次),因此有必要对更改的数据进行存档。

在这种情况下被证明难以管理的另一件事(我已经一起破解了一些解决方案)是,在第 2 步期间,由于在多个表中插入数据的 SQL 查询量很大,数据库开始减速到爬行,这影响依赖于数据库的系统的其余部分(它是托管多个站点的专用服务器)。我什至无法进入第3步......

关于我应该如何解决这个问题的任何提示?需要注意的注意事项?任何能帮助我解决这个问题的事情都非常受欢迎。

谢谢!

4

1 回答 1

0

我的一些想法:

  1. 如果您的数据库支持事务,您可以设计一种巧妙的方式来使用数据库事务。我只尝试过数据库事务,但他们说它可以将插入速度提高到 40%(mysql.com)并且它不会锁定表。

  2. 您可以将数据附加到临时文件,即使是对 sql 友好的格式,也可以立即将数据加载到数据库中。使用 LOAD DATA INFILE 通常快 20 倍(mysql),我曾经快速插入超过 100 万个条目,而且速度非常快。

  3. 设置某种排队系统。

  4. 对每个查询进行睡眠或等待(在 python 中,time.sleep(1) 将使进程等待 1 秒)

我不确定您使用的是什么数据库,但这里有一些优化插入的指针:http:
//dev.mysql.com/doc/refman/5.0/en/insert-speed.html

于 2010-08-27T18:18:22.480 回答