0

这不是一个非常技术性的问题,因为我只是在寻找关于为什么会发生这种事情的理论。

在我们的应用程序中,我们有几个不同的存储过程,它们读取大部分相同的表。我们一直在监视 SQL Server,并试图取消列表中最昂贵的查询(最高 I/O、CPU 时间等)。通过更改 SQL 和/或更改应用程序,我们已经看到了很多收益。

无论如何,我们修改了存储过程#1 并发布了它。正如预期的那样,它的表现要好得多。然而,存储过程#2(它读取相似的数据)突然发现它的性能指标下降了(它消耗了更多的 I/O)。

发布后我们仍然处于更好的位置,但我正试图弄清楚为什么会发生这种情况。到目前为止,我一直无法复制该问题(无论我如何使用存储过程,它对我来说仍然表现良好)。

此外,存储过程并非每次在生产中都表现不佳。在大多数情况下,它运行得很好。

有任何想法吗?

我们使用的是 SQL Server 2008。我们没有更改任何索引。

4

1 回答 1

0

这似乎完全不相关,但请幽默并检查您在数据库实例上的最大并行度:

EXEC sp_configure '最大并行度'

我的怀疑是您的 SP 的零星执行不良总是发生,但被数据库的一般性能不佳所掩盖。这个配置值很可能设置为 0,默认情况下这是一件坏事。您需要根据应参考此知识库的各种因素将其更改为 1 到 8 之间的值:http: //support.microsoft.com/kb/2806535

我有一种感觉,您不时会收到一个失控的并行查询,这将解释您所看到的行为,而更改此值将有助于遏制这种情况。

PS我很抱歉没有对这个问题发表评论,但我的声誉还不够高......

于 2013-07-10T17:08:55.507 回答