【发布时间】:2015-01-28 04:07:58
【问题描述】:
我在我的 Django 应用程序中遇到了一个非常慢(原始)查询的问题。奇怪的是,当我从 shell 启动隔离查询时它并不慢(例如:python manage.py my_code_query)但是当我运行包含我所有查询的整个程序时它很慢(它总是在同一个查询中“阻塞”;实际上它最终会完成,但速度要慢 100 倍)。这就像在有问题的查询之前的所有查询都在消耗内存并且当我的查询开始时没有足够的内存。直接从 Postgres 运行的查询完全没有问题。
我在某处(Django cursor.execute(QUERY) much slower than running the query in the postgres database)读到它可能是 Postgres 中的 work_mem 设置导致了问题,但他们不太清楚他们从 Django 设置它的方式。我是否必须从我的 connection.cursor.execute() 调用来设置 work_mem 参数?只有一次?
会不会是 work_mem 设置以外的另一个问题?
任何提示将不胜感激。 谢谢, 帕特里克
【问题讨论】:
-
查询是运行1次还是多次?通过网络而不是本地运行查询有一定的开销。
-
查询在本地运行一次。
标签: python sql django performance postgresql