性能问题-最大失效时间



我有一个sp在生产中运行,最大_elaped_time=87269.399,平均_elaped_time(ms(=10.24。此外,最大_逻辑_广告:8180303平均_逻辑_标签=3803.83795958974

有人能帮助我们理解为什么我们在最大时间和平均时间上有这么大的时差吗。所有可能的原因。

在没有更多信息的情况下,我的掷硬币回答(例如,我猜有50%的机会是正确的(是参数嗅探。

这是Brent Ozar关于识别和修复方法的一段长达一小时的精彩视频。


编辑:当然,还有无数其他的可能性。

  • 存储过程中有不同的代码分支(例如,在某些情况下,运行这些额外昂贵的查询(
  • 糟糕的统计数据(不是最新的(也可能增加其他问题的影响
  • 溢出到磁盘(例如,当结果远大于内存授予时(也会大大降低速度
  • 循环的大小/运行次数可能变化很大
  • 阻止SP继续运行的其他长查询和/或维护任务
  • SQL Server以您意想不到的方式在存储过程中使用view(例如,当将一个视图连接到其他表时,SQL Server可能会对每行执行一次整个视图,而不是作为单个虚拟表执行(

另一方面,大多数人在查看存储过程时都能够找到并修复(或至少理解(上面的许多内容。然而,如果您没有听说过参数嗅探,那么您不太可能自己发现它。