mcpField
D
django-query-profiling

django-query-profiling

github.com/lvtd-llc开发162 次安装7 周前更新
代码仓库

关于 django-query-profiling

面向 Django 开发者的工作流技能,用于将性能变慢的问题定位到具体 QuerySet、SQL 语句和可复现情境。它结合线上证据、代码追踪和本地复现,为后续修复指明方向。

主要功能

  1. 01记录用户可见的慢路径
  2. 02收集追踪与查询证据
  3. 03将 SQL 映射到 Django 代码
  4. 04用代表性数据复现
  5. 05根据发现选择修复方向

适用场景

  1. 01调查缓慢的 API 操作
  2. 02查找慢页面背后的 SQL
  3. 03复现后台任务的性能下降

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/lvtd-llc/skills --skill django-query-profiling

安装后在 Claude Code 中输入/django-query-profiling确认已加载。

附带文件references/tooling-and-reproduction.md

详细介绍

Django 查询分析

使用此技能,将模糊的 Django 性能缓慢反馈转化为具体的查询集、SQL 语句和可复现的场景。

工作流

  1. 从用户可见的缓慢路径入手。

    • 记录 URL、API 操作、后台任务、管理命令或报告。
    • 收集请求参数、用户或租户规模、分页状态和数据量。
  2. 收集生产或预发布环境中的证据。

    • 条件允许时,优先使用 APM 事务跟踪。
    • 对于不涉及 Python 执行速度的慢 SQL,使用数据库慢查询日志。
    • 在本地开发中,为服务器渲染的页面使用 Django Debug Toolbar。
    • 对于 API 或任务,在可疑代码块周围添加有针对性的查询日志。
  3. 将 SQL 映射回 Django 代码。

    • 搜索模型表名和列名。
    • 检查视图中的 get_queryset()、序列化器字段、模板循环、管理器、模型属性和信号处理器。
    • 检查初始查询集求值后是否发生了关联对象访问。
  4. 在本地或安全的 Shell 中复现。

    • 尽可能使用接近生产环境的行数。
    • 测量时,禁用无关的检测工具和仅用于调试的中间件。
    • 保留可重复运行的脚本、测试或 Shell 片段,用于触发缓慢路径。
  5. 确定修复方向。

    • 查询次数问题:使用 django-orm-query-optimization。
    • 单条 SQL 语句缓慢:使用 django-query-plan-reading。
    • 大型循环或写入:使用 django-queryset-batch-processing。

请参阅 tooling-and-reproduction.md,了解具体的性能分析代码片段和注意事项。

有效证据

  • 特定路径优化前后的查询次数。
  • 缓慢的 SQL 或标准化 SQL 指纹。
  • 能说明 SQL 来源的调用栈或代码位置。
  • 在相同环境和具有代表性的数据规模下测得的耗时。

验证

性能分析不能仅凭猜测结束。请明确指出查询集、代码路径,以及其他 Agent 可以重新运行的命令或请求。

评论

支持 Markdown