我们正在尝试运行一个存储过程,该过程将对超过1000万行的表的每一行进行小的更新(这是一个大型数据库,如您所想)。我们正在运行SQL Server 2005。
我创建的存储过程表现得很奇怪。它启动时,移动速度非常慢 - 占用很少的CPU资源。突然间,它突然飙升了一两个小时,占据了99%的CPU资源 - 此时它的移动速度非常快(这就是我们想要的)。
然而,突然间,它再次放慢速度,工作得很慢!
我们希望它能够快速运行(即获取所需的所有资源),以便完成任务(因为这是一个旨在更新数据库的ONE TIME存储过程)。
我们的服务器具有以下资源:英特尔(R)Xeon(R)CPU E5520 @ 2.27 Ghz 2.27 Ghz,18 GB Ram
有人可以帮我理解为什么SQL Server会这样做,以及如何修复我的存储过程以便它快速运行并使用可用的资源一致吗?
答案 0 :(得分:0)
首先确定当SP工作缓慢时发生了什么 - 是您的磁盘或网络相关的瓶颈吗?
你可以按照布伦特·奥扎尔关于使用perfmon来识别它的伟大指南:http://www.brentozar.com/archive/2006/12/dba-101-using-perfmon-for-sql-performance-tuning/
一旦你知道瓶颈在哪里,识别核心问题就变得容易多了。 SP加入任何其他表吗?是否存在连接数据的分布,导致某些行的磁盘IO数量大于其他行?