1

データベース内のフィールド(たとえば、img_name)を更新するための1つのrakeタスクがあります。私のデータベースには75,000以上のレコードがあります。レーキタスクを実行すると、レーキタスクを完了するのに1時間以上かかることを意味します。10,000レコードごとにrakeタスクを実行したいと思います。初めて10,000レコード、2回目は10,000レコードというように意味します。誰かが私を助けることができますか?前もって感謝します。

4

1 に答える 1

2

使用しているバックグラウンドジョブジェム(delayed_jobなど)はありますか?もしそうなら、私は仕事をするためにたくさんのバックグラウンドジョブを作成するレーキタスクを持っているでしょう。

反復している配列がある場合は、次のように実行できます。

items.in_groups_of(10000, false) do |batch|
  # create background job for this batch
end

コレクションの場合は、次のようなものを使用できます。

@items.find_in_batches(batch_size: 10000) do |batch|
  # create background job for this batch
end
于 2012-12-28T07:39:21.023 に答える