0

我在 Heroku 应用程序中将 Resque 用于后台作业,我想知道是否有办法更快地处理给定的作业。

例如,有一些工作涉及获取一个大文件(20GB+),读取它的内容,并将其拆分为数据库条目(数百万个条目)。

这发生在一项工作中。

投入更多的工人是行不通的,因为只有一名工人用于这项工作。那么有没有办法让给定的工人工作得更快呢?

4

2 回答 2

1

没有看到任何代码很难说,但也许有机会优化它正在创建的 UPDATE 或 INSERT?

如果它在一个循环中

csv_file.each_line do |line|
  Record.create ...
end

您可以通过批处理它来提高它的性能,以便它从文件中读取 1,000 行,然后对数据库执行 1,000 行的 INSERT。

这个SO 答案显示了如何使用 create 进行批量插入。

于 2017-02-02T23:39:14.930 回答
0

一种选择是为您的工作人员使用具有双 CPU 和双内存的新 2x 测功机。

于 2013-05-07T19:12:40.753 回答