主线课程/7

7 课:用 AI 辅助 SQL、缓存与性能分析

先看清瓶颈,再决定要不要优化

SQL缓存性能2h

性能分析最容易掉进两个陷阱:一个是“看到慢就先加缓存”,另一个是“看到 SQL 就先改索引”。这两种反应都不完全错,但都太快了。AI 在这一课真正能帮上的,不是替你直接定优化策略,而是帮你解释现象、归纳访问模式、组织实验和记录取舍。

真实研发场景

真正难的不是没有建议,而是不知道先看哪一层

线上接口开始变慢时,团队经常同时听到好几种声音:有人说应该先查 SQL,有人说应该先上缓存,有人觉得可能是检索链路慢,还有人怀疑是模型调用本身。每个方向都可能有道理,但如果没有先把请求路径、热点访问、命中率和延迟来源拆开看,优化动作就很容易打在错误层上。

AI 在这里最稳的价值,是把“现象”翻译成“待验证的性能假设”,帮助工程师避免凭直觉先动刀。

本课重点是“先解释现象,再做实验”

性能问题里最贵的,不一定是分析慢,而是错误优化。你可能花了很多时间加缓存,却引入失效复杂度;也可能为了一个偶发慢查询改了索引,却没解决真正的热点访问模式。AI 应该帮助你更快理解现象和实验设计,而不是跳过证据直接给出“最优方案”。

传统做法的痛点

错误优化会把复杂度加到错误层

习惯性动作短期看起来解决了什么长期可能带来的问题
先加缓存暂时降低读延迟一致性、失效和命中率问题增加
先改 SQL看起来更专业如果热点不在数据库,收益很低
先怀疑模型调用容易归因给外部服务忽略应用层访问模式和重试
只做一次分析有了建议文本没有实验和数据验证,无法沉淀

性能问题最怕的不是不知道,而是只知道“一个方向”。

AI 参与性能分析时常见的三个误区

  • 让 AI 直接决定索引、缓存键或 TTL
  • 没有准备请求量、慢点分布、命中率等证据就开始问优化
  • 只保留建议文本,不记录为什么采纳或放弃

AI 能提效到哪一步

AI 最适合参与的分析动作

  • 解释 SQL 或访问路径:帮助工程师快速看懂查询意图和潜在风险
  • 归纳热点模式:例如读多写少、重复查询、检索双通路合并
  • 草拟缓存候选:列出适合缓存的对象、键粒度和潜在失效风险
  • 组织性能检查单:帮助你把实验前提和验证指标写清楚

不适合直接交给 AI 拍板的部分

决策为什么必须人工判断
是否引入缓存取决于一致性成本和维护成本
是否改索引或改表结构取决于真实查询分布和业务写入代价
是否接受性能退化取决于 SLA、流量和业务影响
是否更换实现策略需要结合团队维护能力和上线风险

一个很实用的规则是:AI 可以给你实验候选,但不能替你跳过实验。

推荐工作流

先准备“现象包”,不要只准备一段 SQL

建议至少准备这些信息:

  • 请求路径或调用链
  • SQL 或检索逻辑
  • 延迟、命中率、访问量等基础指标
  • 当前缓存或无缓存策略
  • 你已经观察到的异常模式

五步性能分析法

步骤AI 产出人工要做什么验证方式
1. 解释现象路径说明、潜在瓶颈清单删掉与现象无关项是否能明确慢在哪一层
2. 归纳访问模式热点、重复读、写读比例说明结合业务量级修正是否足以支持缓存或索引假设
3. 提实验方案SQL 优化、缓存候选、采样建议选择一两个最值得验证的实验是否有清晰验证指标
4. 做真实验证运行实验或观察指标记录前后差异命中率、耗时、错误率是否改善
5. 沉淀取舍最终策略与放弃理由写入文档或检查表下次是否可复用

一个适合性能分析阶段的输入模板

md
请求路径:
观察到的现象:
相关 SQL / 检索逻辑:
已有指标:
当前缓存策略:
请输出:
1. 现象解释
2. 值得验证的优化候选
3. 每个候选的风险与验证指标

与仓库代码和模板的映射

常见误用与风险

误用一:让 AI 直接决定缓存策略

缓存涉及一致性、淘汰、更新和命中率,不是看起来“适合缓存”就能直接上。

误用二:没有指标,只看建议是否像样

没有真实数据时,所有优化建议都只是候选假设。

误用三:把问题简单归因为“数据库慢”

慢查询只是结果的一部分,问题可能出在访问模式、重复读或调用链设计。

误用四:优化后不记录为什么做、为什么不做

没有取舍记录,下次遇到类似问题时团队还是要重来一遍。

课后练习

建议直接在 ../课后练习/第7课/练习.md 中完成本课练习,并使用 ../课后练习/通用提交模板.md 保留 AI 输入、人工删改和验证结果。

如果你只做最小版交付,也至少保留四样东西:结构化输入、AI 产出摘要、人工判断记录、最终验证结果。

基础题

挑一条 SQL 或热点请求路径,先写一份“现象包”,不要急着给方案。

进阶题

让 AI 基于现象包给出 2 到 3 个优化候选,再人工写出每个候选的风险与验证指标。

挑战题

产出一份性能分析记录,说明最终选择了什么方案、放弃了什么方案,以及依据是什么。