【问题标题】:Raw query in Django very much slower than the same in PostgresDjango 中的原始查询比 Postgres 中的查询慢得多
【发布时间】: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


【解决方案1】:

受那篇帖子 (How can I tell Django to execute all queries using 10MB statement mem?) 的启发,我在执行光标之前进行了此调用:

cursor.execute("set work_mem='100MB'") #set statement_mem does not work

现在运行很及时。

--编辑:嗯,那是昨天。今天它不再及时运行。不知道为什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 2023-03-14
    • 2012-09-16
    • 2011-09-20
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多