2014-04-15 43 views
0

在mod_wsgi的pylons1.0項目中使用postgresql9.1.9。postgresql的MemoryError 9.1.9

獲取「內存不足錯誤」。

查詢是約140萬行,並在query.all()上崩潰。 用於過濾的列被編入索引。 在postgresql.conf中,shared_buffers = 24MB,max_connections = 100。

你可以請建議工作?

+0

'shared_buffers = 24MB'現在**非常低。但更重要的設置是'work_mem'。執行計劃說什麼?該錯誤消息是來自Postgres還是來自您的編程語言? Postgres日誌文件是否顯示任何錯誤?您是否意識到有4個可用於9.1.x的bug修復版本,您沒有應用? –

+0

謝謝。我嘗試將work_mem從1MB增加到5MB,然後再增加10MB。現在沒有MemoryError,但兩種情況下都需要1分鐘。這是正常的,還是你提出更好的價值? – hrs

+0

http://wiki.postgresql.org/wiki/SlowQueryQuestions –

回答

1

查詢約爲140萬行,並在query.all()上崩潰。

當你說崩潰:你的意思是python客戶端可執行文件,或PostgreSQL服務器?

我強烈懷疑崩潰是在Python中。我會說你會立刻把所有的結果讀到記憶中,而且他們不適合。

你需要做的是逐步讀取查詢結果,處理它們,並從內存中丟棄它們。在psycopg2中,可以通過迭代cursor對象或使用cursor.fetchone()來完成此操作。塔架應該提供類似的方法。

+0

這是一個python內存錯誤。所以我改變了Python代碼。它解決了這個問題。謝謝 :) – hrs