关于 django-query-profiling
面向 Django 开发者的工作流技能,用于将性能变慢的问题定位到具体 QuerySet、SQL 语句和可复现情境。它结合线上证据、代码追踪和本地复现,为后续修复指明方向。
主要功能
- 01记录用户可见的慢路径
- 02收集追踪与查询证据
- 03将 SQL 映射到 Django 代码
- 04用代表性数据复现
- 05根据发现选择修复方向
适用场景
- 01调查缓慢的 API 操作
- 02查找慢页面背后的 SQL
- 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 语句和可复现的场景。
工作流
-
从用户可见的缓慢路径入手。
- 记录 URL、API 操作、后台任务、管理命令或报告。
- 收集请求参数、用户或租户规模、分页状态和数据量。
-
收集生产或预发布环境中的证据。
- 条件允许时,优先使用 APM 事务跟踪。
- 对于不涉及 Python 执行速度的慢 SQL,使用数据库慢查询日志。
- 在本地开发中,为服务器渲染的页面使用 Django Debug Toolbar。
- 对于 API 或任务,在可疑代码块周围添加有针对性的查询日志。
-
将 SQL 映射回 Django 代码。
- 搜索模型表名和列名。
- 检查视图中的
get_queryset()、序列化器字段、模板循环、管理器、模型属性和信号处理器。 - 检查初始查询集求值后是否发生了关联对象访问。
-
在本地或安全的 Shell 中复现。
- 尽可能使用接近生产环境的行数。
- 测量时,禁用无关的检测工具和仅用于调试的中间件。
- 保留可重复运行的脚本、测试或 Shell 片段,用于触发缓慢路径。
-
确定修复方向。
- 查询次数问题:使用
django-orm-query-optimization。 - 单条 SQL 语句缓慢:使用
django-query-plan-reading。 - 大型循环或写入:使用
django-queryset-batch-processing。
- 查询次数问题:使用
请参阅 tooling-and-reproduction.md,了解具体的性能分析代码片段和注意事项。
有效证据
- 特定路径优化前后的查询次数。
- 缓慢的 SQL 或标准化 SQL 指纹。
- 能说明 SQL 来源的调用栈或代码位置。
- 在相同环境和具有代表性的数据规模下测得的耗时。
验证
性能分析不能仅凭猜测结束。请明确指出查询集、代码路径,以及其他 Agent 可以重新运行的命令或请求。
评论
支持 Markdown