我在生产中有一个SQL Server数据库,它已经存在了2个月。不久之前,与其相关联的Web应用程序加载需要很长时间。有时它会说超时发生了。
通过运行命令“exec sp_updatestats
”找到快速解决方法将解决问题。但我需要始终如一地运行(每5分钟一次)。
所以我用计时器创建了一个Windows服务,并在服务器上启动。我的问题是根本原因和可能的永久解决方案是什么?任何人吗?
以下是Activity Monitor
中最昂贵的查询WAITFOR(RECEIVE TOP (1) message_type_name, conversation_handle, cast(message_body AS XML) as message_body from [SqlQueryNotificationService-2eea594b-f994-43be-a5ed-d9a47837a391]), TIMEOUT @p2;
答案 0 :(得分:0)
要诊断效果不佳的查询,您需要:
此时,您可以开始尝试找出性能问题。
鉴于exec sp_updatestats
修复了您的问题,可能是某些表的统计信息已过期(这是导致性能问题的常见原因)。如果是这种情况,那么您可以调整统计信息,或者至少只重建那些导致问题的统计信息。
值得注意的是,更新统计信息还会导致缓存的执行计划失效,因此您的问题与统计信息无关 - 您需要在查看解决方案之前收集有关性能较差的查询的更多信息。
您最昂贵的查询看起来就像是在等待邮件,即它在长时间运行的查询列表中,因为它的设计运行时间很长,而不是因为价格昂贵。
答案 1 :(得分:0)
感谢大家,我为我的问题找到了解决方案。它通过设置启用代理来启用我的sql服务器上的sql依赖模块,这是非常不同的那就是导致超时查询的那个,所以通过将其设置为false,现在一切正常。