MS SQL Server 中数百个休眠进程会降低性能吗?

MS SQL Server 中数百个休眠进程会降低性能吗?

我们有一个相当大的 SQL 数据库 (24 GB),供用户运行报告。有些报告内容繁杂,但通常运行速度很快 - 只需几分钟。

最近几周我们发现一个问题,这些相同的报告需要 20 分钟,这没有意义——报告 SQL 都没有改变。

在我调查的过程中,我发现活动监视器中有数百个(目前超过 300 个)休眠任务。我们的工作站上有大约 30 个用户,可能有十几个网络用户(使用访问此数据的门户网站)。因此,300 个休眠进程对我来说似乎很疯狂。

另一条随机信息是,如果我们重新启动 SQL 服务器,报告将像闪电一样运行。但几个小时后 - 就糟糕了。

我正在尝试追踪这个问题,但我不知道该怎么做,但我想当前的问题是这样的:这些堆积起来的休眠进程是否会降低性能,足以导致这样的减速?

非常感谢。

答案1

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

如果重新启动时报告速度非常快,则可能是您进行了参数嗅探。

您可以对此进行运行测试sp_updatestats:这会使缓存的执行计划无效,并使报告再次变得清晰。

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

相关内容