在mod_wsgi的pylons1.0項目中使用postgresql9.1.9。postgresql的MemoryError 9.1.9
獲取「內存不足錯誤」。
查詢是約140萬行,並在query.all()上崩潰。 用於過濾的列被編入索引。 在postgresql.conf中,shared_buffers = 24MB,max_connections = 100。
你可以請建議工作?
在mod_wsgi的pylons1.0項目中使用postgresql9.1.9。postgresql的MemoryError 9.1.9
獲取「內存不足錯誤」。
查詢是約140萬行,並在query.all()上崩潰。 用於過濾的列被編入索引。 在postgresql.conf中,shared_buffers = 24MB,max_connections = 100。
你可以請建議工作?
查詢約爲140萬行,並在query.all()上崩潰。
當你說它崩潰:你的意思是python
客戶端可執行文件,或PostgreSQL服務器?
我強烈懷疑崩潰是在Python中。我會說你會立刻把所有的結果讀到記憶中,而且他們不適合。
你需要做的是逐步讀取查詢結果,處理它們,並從內存中丟棄它們。在psycopg2
中,可以通過迭代cursor
對象或使用cursor.fetchone()
來完成此操作。塔架應該提供類似的方法。
這是一個python內存錯誤。所以我改變了Python代碼。它解決了這個問題。謝謝 :) – hrs
'shared_buffers = 24MB'現在**非常低。但更重要的設置是'work_mem'。執行計劃說什麼?該錯誤消息是來自Postgres還是來自您的編程語言? Postgres日誌文件是否顯示任何錯誤?您是否意識到有4個可用於9.1.x的bug修復版本,您沒有應用? –
謝謝。我嘗試將work_mem從1MB增加到5MB,然後再增加10MB。現在沒有MemoryError,但兩種情況下都需要1分鐘。這是正常的,還是你提出更好的價值? – hrs
http://wiki.postgresql.org/wiki/SlowQueryQuestions –