在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 –