2011-02-01 468 views
4

我正在優化我的英雄庫服務器上的SQL查詢的過程中,所以我可以加快一個特定的請求。現在,我主要關注將所有INSERT查詢集中到儘可能少的查詢中。延遲作業批插入

在我的代碼,某些時候,我有這樣的:

jobs.each do |j| 
    Delayed::Job.enqueue j 
    end 

我發現,每次迭代發送首先,插入,提交到數據庫。該jobs陣列可以有幾個到幾百個物體。我已經找到了批量插入延遲作業的方法,但找不到任何東西。任何想法如何實現?

回答

1

我最終排隊了我的User對象,而這個對象具有jobs屬性。所以1插入而不是jobs.length插入。

1

我一直使用AR-Extensions很長一段時間才能將模型中的批量數據插入到數據庫中。

這是on Rails的2.3.x版本不過,要小心,現在有根據Rails的版本,不同的版本:http://www.continuousthinking.com/tags/arext

我不知道如何工作延遲::工作,但是從你的例子猜測,我假設它將每個作業的記錄插入到表中,然後作爲隊列。您可以使用AR-Extensions擴展它,收集所有這些模型並一次插入所有作業。