2010-10-10 48 views
2

我正在解析一個XML文件,其中包含幾千個元素以插入到sql數據庫中。一切工作正常使用SQLite,但Postgres的關於我死亡與此錯誤:Postgres - 循環插入內存不足

PGError: ERROR: out of shared memory 

我被監控鎖定,它看起來像有每個插入語句的鎖,雖然我只是遍歷ActiveRecord的「保存「調用(每個應該有一個事務),這些鎖看起來似乎懸掛在一起,以便我一次打開幾千個。

作爲一個實驗,我包裹在一個事務中節省話費:

Coupon.connection.transaction do 
    @coupon.save! 
end 

這似乎已經解決了我的頭髮問題。但是,這似乎確實有問題。任何人都知道它可能是什麼?我正在使用「pg」驅動程序。

感謝, 湯姆

+0

您是否考慮過水壺? http://kettle.pentaho.com/ – 2010-10-10 02:33:09

+0

你有沒有SQL Rails生成的日誌? – peufeu 2011-05-06 12:09:28

回答

1

您的服務器可能只是被設置爲只使用共享內存少量 - http://www.postgresql.org/docs/8.1/static/kernel-resources.html所有細節這種東西非常漂亮。嘗試提高對初學者。幾千個擊敗PostgreSQL的元素聽起來很奇怪,但是 - 你存儲的對象有多大?你的AR代碼是什麼樣的?這裏沒有很多信息可以繼續。

+0

元素相當小...約20個屬性,其中只有一個是文本數據類型。我的AR代碼也很簡單,但我不確定你在找什麼。創建優惠券,分配幾個屬性,保存。我有幾個驗證器,並且在保存回調之前/之後沒有。我同意你的看法,一個股票安裝的postgres需要任何可擴展性來調整sqlite處理不了的東西是非常奇怪的。另外,我的代碼非常簡單。所以,這就是爲什麼我認爲這裏有AR/Rails/Driver-y。 – 2010-10-11 00:44:37