ども、@kimihom です。 今回、大量のレコードを一つずつ処理する実装をしたので、その実装方法をまとめておく。 コードの大枠 以下は全ユーザー(User)に紐づいているレコード(Record) に対して処理をするコードとなっている。 User.all.order("id").each do |u| r_all = u.records r_all.find_in_batches do |records| Parallel.each(records, in_threads: 50) do |r| begin # 処理 ActiveRecord::Base.connection_pool.with_connection do # ActiveRecord を使った処理 end rescue => e puts "err #{e}" end end end r_all = nil end fi
![Rails で大量のレコードを並列処理する - ボクココ](https://cdn-ak-scissors.b.st-hatena.com/image/square/f7b698072c4975f936d98d6f55c670c642ee7f5d/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fc%2Fcevid_cpp%2F20200119%2F20200119181256.jpg)