SQL Server存储过程执行时间疑难解答

SQL Server存储过程执行时间疑难解答,sql,tsql,Sql,Tsql,有一个存储过程。前一天跑了2分钟,第二天跑了将近10分钟 代码没有变化 那么,检查存储过程及其执行时间的一般故障排除技巧是什么呢。因为没有更改代码。您的数据库或SQL server存在一些资源问题。一些可能的原因(根据我的经验) 存储过程表中的数据增加了很多。(您需要进行索引) 您有另一个存储过程(或正在运行的SQL代理)在同一时间运行,该存储过程在同一个表上执行CRUD,这可能导致该表被锁定 检查窗口日志。可能您的团队正在同一时间备份SQL server,这也可能导致此问题 你有没有检查过过时

有一个存储过程。前一天跑了2分钟,第二天跑了将近10分钟

代码没有变化


那么,检查存储过程及其执行时间的一般故障排除技巧是什么呢。

因为没有更改代码。您的数据库或SQL server存在一些资源问题。

一些可能的原因(根据我的经验)

  • 存储过程表中的数据增加了很多。(您需要进行索引)
  • 您有另一个存储过程(或正在运行的SQL代理)在同一时间运行,该存储过程在同一个表上执行CRUD,这可能导致该表被锁定
  • 检查窗口日志。可能您的团队正在同一时间备份SQL server,这也可能导致此问题

  • 你有没有检查过过时的统计数据和零碎的索引?可能更适合,因为没有代码被更改。我很喜欢StackOverflow,我在那里看到很多相同的SQL问题。为什么这个标签没有完全移动到dba?我想我们通常会在这里遇到更基本的SQL问题。可能有多种原因。一种可能是并发用户/处理使用了大量资源。另一个原因是基数估计较差,导致查询计划效率低下。或者,昨天运行快但今天运行慢的进程也是参数嗅探的典型症状。如果您有一个小时左右的时间,这是一个关于参数嗅探的好视频(由Brent Ozar编写):鉴于参数嗅探也是一种糟糕的基数估计,该视频还可以帮助您完成一般的故障排除过程。从SQL开发人员的角度来看,我们可以检查哪些内容来解决存储过程所花费的执行时间从SQL开发人员的角度来看,我们可以检查哪些内容来解决存储过程所花费的执行时间数据可能已经改变了。这会使统计数据过时,这是一个查询在一夜之间花费的时间突然增加10倍的典型原因