2011-02-01 12 views
4

私は、私は1つの特定の要求に物事をスピードアップすることができますので、私のHerokuのサーバ上で私のSQLクエリを最適化するプロセスにいますよ。今私は主に、すべてのINSERTクエリをできるだけ少ないクエリに集約することを検討しています。私はこれを持っている私のコードの中でいくつかの点で遅延ジョブのバッチ挿入

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

私はすべての反復が、BEGIN INSERT、DBにCOMMITを送信していることが分かりました。そのjobsアレイには、数個〜数百個のオブジェクトを含めることができます。遅延ジョブを一括して挿入する方法を探しましたが、何も見つかりませんでした。どのように達成するための任意のアイデアですか?

答えて

1

私はjobs属性を持っていた、代わりに私のUserオブジェクトをエンキュー終わりました。したがって、jobs.lengthの代わりに1つの挿入を挿入します。

1

私は、データベースにモデルから大量のデータを挿入するために長い時間のためにAR-拡張機能を使用してきました。私は、仕事をどのように動作するか遅れ::わからないんだけど、あなたの例から推測http://www.continuousthinking.com/tags/arext

しかしRailsの2.3.x以降にあった

は、Railsのバージョンによって異なるバージョンが今があることに注意してください私は、ジョブごとのレコードをテーブルに挿入してキューとして機能すると仮定します。 AR拡張機能を使用して、これらのモデルをすべて収集し、すべてのジョブを一度に挿入することができます。

関連する問題