我在 Heroku 应用程序中将 Resque 用于后台作业,我想知道是否有办法更快地处理给定的作业。
例如,有一些工作涉及获取一个大文件(20GB+),读取它的内容,并将其拆分为数据库条目(数百万个条目)。
这发生在一项工作中。
投入更多的工人是行不通的,因为只有一名工人用于这项工作。那么有没有办法让给定的工人工作得更快呢?
我在 Heroku 应用程序中将 Resque 用于后台作业,我想知道是否有办法更快地处理给定的作业。
例如,有一些工作涉及获取一个大文件(20GB+),读取它的内容,并将其拆分为数据库条目(数百万个条目)。
这发生在一项工作中。
投入更多的工人是行不通的,因为只有一名工人用于这项工作。那么有没有办法让给定的工人工作得更快呢?
没有看到任何代码很难说,但也许有机会优化它正在创建的 UPDATE 或 INSERT?
如果它在一个循环中
csv_file.each_line do |line|
Record.create ...
end
您可以通过批处理它来提高它的性能,以便它从文件中读取 1,000 行,然后对数据库执行 1,000 行的 INSERT。
这个SO 答案显示了如何使用 create 进行批量插入。
一种选择是为您的工作人员使用具有双 CPU 和双内存的新 2x 测功机。