新手问题 百万行百字段 all.each do 会挂死

syutran · 2020年01月20日 · 最后由 xiayuanyin 回复于 2020年01月20日 · 2391 次阅读

用网络连接的数据库,一个表有百万行且有 100 多个字段。我做了一个 task 逐行对每条数据做计算,用的 all.each do。死机~ 我以为是写错了,到 rails console 下试试,什么都不做,只 each do 一下就挂了。应该是哪儿的问题呢?

all 是一次把所有数据都 select 再 each 这时候需要用 find_each 分页 each

https://api.rubyonrails.org/classes/ActiveRecord/Batches.html

PG::SyntaxError: 错误:长度为 0 的分隔标示符 在 """" 或附近的 LINE 1: ...aacnamts".* FROM "saacnamts" ORDER BY "saacnamts"."" ASC LIM...

find_each 如果没有 ID,就报错。

出门遇贵人,真是太感谢您了。

相当于执行 select * from some_table,考虑到行数,这个本身就很慢。也许是这个还没返回。

如果 crash 的话,应该是内存爆掉了。

不过石锤还是要试试看。

解决方案其他人已经说了。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号