在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。当我们之前没有重置自己时,为什么我们会突然获得大量读取。我再说一遍 - 我们对这个过程有完全相同的参数,所以为什么它突然决定它要做一堆读取只是有点奇怪。
关于要看什么的任何想法?我们知道一些额外的查询可能会带来一些好处(例如,查询分析器会建议一个查询)但我们不希望看到大致相同的读取次数吗?
由于 安迪
答案 0 :(得分:2)
您是否在其他人正在运行的情况下运行此产品? 然后它可能是一个参数嗅探问题,因为执行计划是为了在编译时提供的参数获得最佳性能而编译的。
您可以尝试添加With Recompile
并查看问题是否消失!