消耗大量数据的 Rake 任务冻结

发布于 2024-08-23 00:05:49 字数 211 浏览 3 评论 0原文

我有一个简单的 rake 任务,它通过 ActiveRecord 消耗大量数据。 (联系人有约 47k 行)

Contact.all.each do |contact|
  contact.update_attribute ...
end

当我运行该任务时,约 400 行被更新,然后任务卡住了。没有错误,也没有数据库活动...

我如何使其正常工作?

I have a simple rake task which consumes pretty much data via ActiveRecord. (contacts has ~47k rows)

Contact.all.each do |contact|
  contact.update_attribute ...
end

When I run that task ~400 rows get updated and then the task stucks. No errors and no database activity at all...

How do I make this work properly?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蛮可爱 2024-08-30 00:05:49

这正是 find_in_batches 的目的。它将立即消除内存中大量的 ActiveRecord 对象。

http://ryandaigle. com/articles/2009/2/23/what-s-new-in-edge-rails-batched-find

This is exactly what find_in_batches is intended for. It will eliminate an enormous number of ActiveRecord objects in memory at once.

http://ryandaigle.com/articles/2009/2/23/what-s-new-in-edge-rails-batched-find

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文