【发布时间】:2016-03-10 16:44:02
【问题描述】:
我有一份每天运行并执行数十个存储过程的工作。
它们中的大多数运行良好,但其中一些最近开始需要一段时间才能运行(4-5 分钟)。
当我早上进来并尝试对其进行故障排除时,它们只需要 10-20 秒,就像他们应该做的那样。
过去 10 天左右一直在发生这种情况。未对服务器进行任何更改(我们正在运行 SQL 2012)。
我该如何解决它,我该怎么做才能解决这个问题??
谢谢!!
【问题讨论】:
-
您如何排除故障?您是否在 SSMS 中运行它们?他们有参数吗?它可能是参数嗅探。可能是由于数据倾斜,执行计划已达到临界点,并且计划不是最优的。这可能是很多事情。你能发布一个过程并回答我关于调试技术的问题吗?
-
在 SP 开始减速时有什么变化吗?比如大约在同一时间开始的新工作。
-
如果只是在第一次运行时速度很慢,那么我肯定会查看您的计划缓存。每当您在 SQL 中运行任何东西时,它都必须进行一些检查以查看它是否已经有计划或需要创建一个计划。如果您的计划缓存过大,则此检查可能会花费比应有的时间更长的时间。另外,您说“第一次运行”,但这是一个反复出现的问题,所以这是服务器重启后的第一次运行还是...?
-
@BobKaufman,我检查了我的 DBA,服务器上似乎没有任何变化,同时没有其他作业在运行。
-
几乎可以肯定是参数嗅探。它有所有的故事迹象。它在 SSMS 中运行速度很快,但在程序中运行速度很慢。该参数是一个日期时间,这是参数嗅探最常见的问题之一,因为数据量可能如此倾斜。看看 Gail Shaw 的这篇文章。它演示了该问题以及有助于提高性能的几种方法。 sqlinthewild.co.za/index.php/2007/11/27/parameter-sniffing
标签: sql sql-server performance stored-procedures sql-tuning