LoginSignup
2
0

More than 3 years have passed since last update.

Railsで大量のデータを更新する際はin_batchesを使おう

Last updated at Posted at 2021-02-27

Ruby on Railsのプロジェクトで、大量のデータを更新しようとしたらメモリ不足でエラーとなったため、解決方法をメモ。

こんな感じで、データを更新しようとしていました。

Hoge.all.map do |hoge|
  hoge.update(fuga: hoge.foo)
end

しかしデータが数十万件あり、メモリ不足で余裕で落ちました。

そんなときは in_batchesを使いましょう。
デフォルトでは1000件ずつ読み込んで処理してくれます。

Hoge.in_batches do |hoges|
  hoges.map do |hoge|
    hoge.update(fuga: hoge.foo)
  end
end

無事解決!
どれくらいの量のデータが扱われるかは、常に意識しないといけないですね。

2
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0