当前位置:  开发笔记 > 前端 > 正文

如何修复在缓存之前运行缓慢的查询

如何解决《如何修复在缓存之前运行缓慢的查询》经验,为你挑选了2个好方法。

我有一些查询导致我们的实时环境超时.(> 30秒)

如果我运行探查器并获取正在运行的SQL并从Management Studio运行它,那么它们需要很长时间才能运行第一次,然后在每次运行后降至几百毫秒.

这显然是SQL缓存数据并将其全部存储在内存中.

我确信可以对SQL进行优化,使其运行得更快.

我的问题是,如何在第二次运行时"修复"这些查询数据已经被缓存并且速度很快?



1> John Sansom..:

我建议您检查执行计划以查找导致性能不佳问题的查询.

您需要在执行计划中确定哪些步骤具有最高成本和原因.可能是您的查询正在执行表扫描,或者正在使用不适当的索引.

RedGate网站提供了一个非常详细的免费电子书,专门用于理解执行计划的内容.

https://www.red-gate.com/Dynamic/Downloads/DownloadForm.aspx?download=ebook1

您可能会发现有一个特定的执行计划,您希望将其用于查询.您可以使用查询提示强制在SQL Server中使用哪个执行计划进行查询.这是一个非常先进的概念,应谨慎使用.有关更多详细信息,请参阅以下Microsoft白皮书.

http://www.microsoft.com/technet/prodtechnol/sql/2005/frcqupln.mspx

我也不建议您清除生产环境中的过程缓存,因为这会对平台上当前没有遇到性能问题的所有其他查询的性能产生不利影响.

例如,如果要执行存储过程,则可以使用WITH RECOMPILE命令确保为每次执行过程计算新的执行计划.

对于整体性能调整信息,在Brent Ozar的博客上有一些优秀的资源.

http://www.brentozar.com/sql-server-performance-tuning/

希望这可以帮助.干杯.



2> Welbog..:

根据http://morten.lyhr.dk/2007/10/how-to-clear-sql-server-query-cache.html,您可以运行以下命令来清除缓存:

DBCC DROPCLEANBUFFERS   
DBCC FREEPROCCACHE  

编辑:我检查了我的SQL Server文档,这对SQL Server 2000至少是正确的.

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有