经验总结 #560:SQL 执行缓慢——查询存储和 SSMS... 笔记

经验总结 #560:SQL 执行缓慢——查询存储和 SSMS Copilot 能揭示什么?

最近一次会话展示了如何通过结合 Query Store 和 SSMS Copilot 来调查 SQL 性能问题。演示中使用了 PHP 程序逐步向表中插入数据,导致性能变化及查询执行计划的改变。关键观察点是:在相同的 Plan ID 下,某查询的执行时间显著增加,表明该计划内部出现了性能退化。该会话展示了 Copilot 如何引导调查过程,从 Ask 模式演进至 Agent 模式,并说明这些流程可被封装为可复用的技能。Query Store 提供了历史性能数据,而 Copilot 则协助分析这些数据并决定后续步骤。实际演示使用 PHP 程序分阶段向表中添加记录,以模拟各种性能问题。随着数据量增长,dbo.GiveNotes 查询的执行计划与性能随之演变。详细对比显示,在尚未引入新计划之前,某一 Plan ID 的 CPU 使用率、持续时间和逻辑读取量已显著上升。调查重点在于构建变更时间线,并理解工作负载贡献者的聚合影响。加权平均值对于准确评估不同区间及执行次数下的性能至关重要。逻辑读取量的增加指向数据处理及访问路径问题。该会话探讨了三种与 Copilot 交互的方式:Ask 模式用于引导式提问,Agent 模式用于自主诊断,以及可复用的 Agent Skills 用于标准化调查。SQL Performance Investigator 包被开发出来,指导代理程序识别贡献者、分析计划历史、检测计划内的性能退化,并调查选择性、统计信息及索引。所提议的索引经过评估,但其实际改进效果仍需在与可比工作负载的对比中进一步验证。核心要点是:理解性能变化需要同时考察不同计划之间的差异,以及单个计划历史中的变化。