我正在解析一个包含几千个元素的XML文件,以便插入到sql数据库中。使用sqlite一切正常,但是postgres因为这个错误而死在我身上:
PGError: ERROR: out of shared memory
我正在监视锁,看起来每个insert语句都有一个锁,虽然我只是循环遍历activerecord“save”调用(每个应该有一个事务),但这些锁似乎都是这样的一次打开几千个。
作为一项实验,我将保存调用包装在一个事务中:
Coupon.connection.transaction do
@coupon.save!
end
这似乎解决了我的锁定问题。但是,这似乎确实存在问题。谁知道它可能是什么?我正在使用“pg”驱动程序。
谢谢, 汤姆
答案 0 :(得分:1)
您的服务器可能只是设置为仅使用少量共享内存 - http://www.postgresql.org/docs/8.1/static/kernel-resources.html非常好地详述了所有这些内容。尝试为初学者提高。几千个击败PostgreSQL的元素确实听起来很奇怪 - 你要存储的对象有多大?您的AR代码是什么样的?这里没有太多信息。