SQL Server 2008:执行和更改存储过程需要很长时间。为什么?

时间:2011-02-15 12:36:38

标签: sql-server stored-procedures

我们的SQL Server 2008显示了一种奇怪的行为:

我们有一个SP,通常需要500毫秒才能执行。有时执行只需要16秒。奇怪的是,改变这个SP也需要16秒。

SP使用CTE返回一些数据。奇怪的是,当我们在SP的开头添加一个RETURN语句时,它也需要16秒。

SP使用未提交的隔离级别读取。我们已经使用SQL Server 2008 R2测试了另一台服务器并遇到了同样的问题。

我们不知道从哪里开始搜索此问题的来源。帮助:)

由于 托本

2 个答案:

答案 0 :(得分:1)

更新您的数据库统计信息,并正式重新编译您的SP,看看是否有帮助。

同时

  • 重新启动服务器
  • 在服务器上运行存储基准程序(排除硬件问题)
  • 禁用参数嗅探。这不会影响SP-Update速度,但可能有助于执行时间。

答案 1 :(得分:0)

你有几个选择。您可以设置一个扩展事件会话来捕获等待类型及其持续时间,以执行对此过程的一次调用并以此方式进行分析,或者您可以查看sys.dm_exec_requests或sys.dm_os_waiting_tasks之类的内容并查看指向等待状态的时间快照。如果我打赌,我会说你有类似程序试图授予自己权限或某些东西,所以你得到一个模式锁。但是在你看之前你不会确定。