在进行本地数据库调用的Web应用程序中加载页面通常需要10-15秒才能完成给定查询。加载完全相同的页面偶尔会花费大约10-15倍的时间,并且我追溯了额外的页面加载时间,回到了增加的SQL查询执行时间。对于SQL来说,我是一个新手,所以除了检查我的CPU和内存(我从来没有超过50%),我不知道从哪里开始。
我尝试过搜索类似的问题/解决方案,但通常只发现人们内存不足的内容,或者专门基于优化总是运行缓慢的存储过程的指令。这些似乎都没有解决我的问题,即运行完全相同的查询偶尔会比在不同时间运行它们的时间长10-15倍。不幸的是,我无法找到任何直接的解决方法,例如重新启动计算机。
这在过去的~2周内发生了三次。有一刻它工作正常,下一个,它需要10倍的时间。最终,它恢复正常 - 两次我在一夜之间离开我的电脑/周末没有电源关闭,当我回来再次尝试时返回到快速加载时间。在任何一种情况下,我都没有退出任何应用程序或显式改变我的系统状态。
我在Windows 8上运行SQL Server 2012,如果这有任何重要意义的话。我不知道为什么会这样,所以任何提示都会非常感激。
谢谢大卫
编辑:由我的一位前同事回答:
运行此查询:dbcc freeproccache
修好了。在此解释:http://msdn.microsoft.com/en-us/library/ms174283.aspx
他的快速解释是,“SQL在首次执行proc时计算出一个查询计划。如果第一次执行是非典型的,则可能导致存储错误的计划。”
感谢所有回复的人。
答案 0 :(得分:1)
我不是一个sql-server专家,但我也不得不调试这样的几种情况。
使用分析器对我来说最有效。这是我开始使用的链接,它讨论了如何使用分析器监视数据库。
http://msdn.microsoft.com/en-us/library/aa173918(v=sql.80).aspx
在我的情况下,减速的来源是一个C#清理进程,它在一个紧凑的循环中敲击数据库,试图读取,然后清理,然后将数据写回db,这不会让其他进程在它运行的2分钟内有很大的执行空间。
分析器立即检测到了
答案 1 :(得分:1)
运行此查询:dbcc freeproccache
修好了。在此解释:http://msdn.microsoft.com/en-us/library/ms174283.aspx
他的快速解释是,“SQL在首次执行proc时计算出一个查询计划。如果第一次执行是非典型的,则可能导致存储错误的计划。”
感谢所有回复的人。