Django - 追踪在数据库中生成慢查询的代码
Posted
技术标签:
【中文标题】Django - 追踪在数据库中生成慢查询的代码【英文标题】:Django - track down the code that generated slow queries in database 【发布时间】:2021-02-01 07:02:51 【问题描述】:我将 Django 用于大型应用程序。在监控数据库 (Postgres
) 时,我有时会看到写入了一些慢查询日志。
问题是如何追踪生成这些查询的代码。理想情况下,我想要这些日志的一些堆栈跟踪,但想知道是否有其他最佳实践,或者其他工具。
它在生产中,所以 DEBUG
设置为 False,所以 Django 本身不跟踪查询的速度。
P.S - 我在某处看到有人建议将 SQL 注释添加到 SQL 查询本身。不幸的是,这在 Django 中似乎并不普遍,而且它还需要我更新生成查询的每一个代码。
【问题讨论】:
你可以看看Django Debug Toolbar。据我所知,不推荐用于生产,但可以使用。 NewRelic APM for Production 很棒 【参考方案1】:有很多工具可以检查监控在 Django 应用程序中执行的 SQL 查询。
Django Debug Toolbar
Django 调试工具栏是一组可配置的面板,可显示有关当前请求/响应的各种调试信息,并在单击时显示有关面板内容的更多详细信息。
Django Silk
Django Silk 是 Django 框架的实时分析和检查工具。 Silk 拦截并存储 HTTP 请求和数据库查询,然后将它们呈现在用户界面中以供进一步检查
Elastic APM
使用 Elastic APM,监控、检测和诊断复杂的应用程序性能问题,以维持预期的服务水平。
这更像是一个生产设置,您可以借助开箱即用的功能非常轻松地可视化矩阵。他们确实有一个APM setup section for Django
【讨论】:
以上是关于Django - 追踪在数据库中生成慢查询的代码的主要内容,如果未能解决你的问题,请参考以下文章
为啥通过 django QuerySet 进行查询比在 Django 中使用游标慢得多?