SQL Server 2012的存储过程花费过多时间

问题描述:

有一个生产问题,其中的一个存储过程声明花费过多时间 - 上平均需要15-20秒,但在当天的一个花了超过100秒。SQL Server 2012的存储过程花费过多时间

它发生在上周,周一再次重复了这个星期太 - 周二。我们检查了数据库上的负载一切都是一致的,周一或周二没有大量的数据。

同一个DB上的所有其他存储过程按预期工作。但只有这个存储过程触及几个额外的表需要太多的时间。重新索引后,只有它恢复正常。此存储过程在内部调用其他几个存储过程和函数。

什么可能是错的?

它不能被什么东西给网络的影响只在一个存储过程有关。

它不可能是什么关系数据库负载或CPU利用率的影响只在一个存储过程。

有它只能运行在周一周二或没有计划的作业。

+0

这听起来像你需要更多的信息。我建议使用SQL事件探查器来运行跟踪,以查看在遇到性能问题时是否可以确定发生了什么。 –

+0

是的执行计划将提供重要信息,以查看造成瓶颈的原因。如果你分享我可以帮助审查。 –

我想看看活动看看什么进程正在大多数CPU和使用SQL事件探查器查看资源的查询多少花费。既然您确定存储过程需要太多的CPU,那么您必须检查查询的执行方式。
在查询分析器中,启用显示实际执行计划。这是我将检查如何执行查询,是否使用索引或表扫描,排序算法等。它显示哪些功能消耗最多的CPU。如果它是读取查询,我将检查这些表并查看表内部是如何分割的以及检索数据需要多少次传递。如果是写查询,那么我将检查行/表锁和日志。如果将恢复模式从简单更改为完整,写入操作可能需要相当长的时间。
如果您已经完成了执行计划,请在此处使用存储过程粘贴执行图片,以便我可以看到实际放慢执行的情况。
通过更改您的SQL查询,索引,查询提示和表分区来修复它们。