MS SQL Server中的数百个睡眠进程是否会降低性能?

我们有一个相当大的SQL数据库(24 GB),我们的用户在其上运行报告。 一些报告是密集的,但通常会很快 – 几分钟。

我们在最近几周看到一个问题,这些相同的报告将花费20分钟,这是没有意义的 – 没有任何报告SQL已经改变。

在我的调查中,我发现活动监视器中有数百个(目前超过300个)睡眠任务。 我们在工作站上有大约30个用户,也许有十几个networking用户(使用访问这些数据的门户网站)。 所以300个睡眠过程对我来说似乎很疯狂。

随机信息的另一点是,如果我们重新启动SQL服务器,报告就像闪电般运行。 几个小时后,虽然 – 废话。

我试图跟踪这个问题,我不知道如何去做,但我想现在的问题是:这些沉睡的进程是否会降低性能,导致像这样的放缓?

非常感谢。

睡眠过程会消耗一些内存(每个几十k),但是300并不多。

如果重新启动报告的速度很快,则可能有参数嗅探。

你可以testing这个运行sp_updatestats :这会使caching的执行计划无效,并且应该再次使报告变为whizzy。

参数嗅探本身可以通过屏蔽或提示来解决(StackOverflow上的大量信息)