2

对于给定的查询,在进行本地数据库调用的 Web 应用程序中加载页面通常需要 10-15 秒。加载完全相同的页面有时需要大约 10 到 15 倍的时间,而且我已经将额外的页面加载时间追溯到增加的 SQL 查询执行时间。当谈到 SQL 时,我是个新手,所以除了检查我的 CPU 和内存(我从来没有超过 50%),我不知道从哪里开始。

我尝试搜索类似的问题/解决方案,但通常只找到对内存不足的人的引用,或者专门基于优化始终运行缓慢的存储过程的指令。这些似乎都没有解决我的问题,即运行完全相同的查询有时会比我在不同时间运行它们时长 10-15 倍。不幸的是,我无法找到任何直接的解决方法,例如重新启动计算机。

在过去的~2 周内,这种情况已经发生了 3 次。前一刻它工作正常,下一刻,它需要 10 倍的时间。最终,它恢复正常 - 两次我在没有关机的情况下过夜/周末离开我的电脑,当我回来并再次尝试时恢复到快速加载时间。在这两种情况下,我都没有退出任何应用程序或显式更改系统状态。

我在 Windows 8 上运行 SQL Server 2012,如果这很重要的话。我不知道为什么会这样,所以任何提示将不胜感激。

谢谢,大卫

编辑:由我的前同事回答:

运行此查询:dbcc freeproccache

解决它。在这里解释:http: //msdn.microsoft.com/en-us/library/ms174283.aspx

对他的快速解释是,“SQL 在第一次执行 proc 时计算出一个查询计划。如果第一次执行是非典型的,它可能会导致存储一个错误的计划。”

感谢大家的回应。

4

2 回答 2

1

我的前同事回答:

运行此查询:dbcc freeproccache

解决它。在这里解释:http: //msdn.microsoft.com/en-us/library/ms174283.aspx

对他的快速解释是,“SQL 在第一次执行 proc 时计算出查询计划。如果第一次执行不典型,可能会导致存储错误的计划。”

感谢大家的回应。

于 2013-08-09T21:26:27.983 回答
1

无论如何,我都不是 sql-server 专家,但我也不得不调试一些这样的情况。

使用分析器对我来说最有效。这是我开始使用的链接,它讨论了如何使用分析器监视您的数据库。

http://msdn.microsoft.com/en-us/library/aa173918(v=sql.80).aspx

在我的情况下,减速的根源是一个 C# 清理过程,它在一个紧密的循环中敲击数据库,试图读取,然后清理,然后将数据写回数据库,这并没有让其他进程有太多空间在它运行的 2 分钟内执行。

分析器立即检测到这一点

于 2013-05-28T19:06:13.493 回答