存储过程性能不一致

时间:2014-03-13 11:59:48

标签: sql sql-server performance

在SQL Server上运行存储过程时,我们遇到了一个奇怪的情况。当使用相同的参数运行完全相同的过程时(我们通过SQL Server Profiler捕获了这些参数),我们获得了非常可变的CPU使用率。现在显然这取决于服务器负载和服务器上正在进行的其他活动。但是,我并不期望"读取"我们在以后的场合运行SP时遇到的情况 - 相隔几分钟。

Day  Hour Min CPU      Reads
70  15  54  4851    33079
70  15  54  5960    33723
70  15  58  5538    30189
70  16  10  5226    29672
70  16  12  24102   1019178
70  16  17  23915   1017621
70  16  17  26348   1018690
70  16  30  6443    28121
70  16  30  6474    28539
70  16  33  5242    27245
70  16  33  6365    27338
70  16  35  5413    27335

的bizzare。当我们之前没有重置自己时,为什么我们会突然获得大量读取。我再说一遍 - 我们对这个过程有完全相同的参数,所以为什么它突然决定它要做一堆读取只是有点奇怪。

关于要看什么的任何想法?我们知道一些额外的查询可能会带来一些好处(例如,查询分析器会建议一个查询)但我们不希望看到大致相同的读取次数吗?

由于 安迪

1 个答案:

答案 0 :(得分:2)

您是否在其他人正在运行的情况下运行此产品? 然后它可能是一个参数嗅探问题,因为执行计划是为了在编译时提供的参数获得最佳性能而编译的。

您可以尝试添加With Recompile并查看问题是否消失!