小编use*_*615的帖子

运行 DELETE 存储过程,但发现 WHILE 循环中的性能随着迭代次数的增加而下降

有一个快速的一般问题。我有一张桌子,我正在尝试清除一张桌子。我正在使用批次之间的时间为 50 毫秒和每批次 2000 条记录的WHILE循环进行删除WAITFOR DELAY。真正的问题是,随着时间的推移,删除的记录数量会随着时间的推移而下降。请参阅以下内容:

Minute Number | Number of Records Deleted:

            1 | 162,000 
            2 | 116,000 
            3 |  80,000 
            4 |  72,000 
            5 |  62,000 
            6 |  38,000 
            7 |  38,000 
            8 |  34,000 
            9 |  20,000
Run Code Online (Sandbox Code Playgroud)

想知道使用WHILE循环批处理删除记录是否有一些基本的东西会导致性能随着循环的每次迭代而降低。我们一直在手动观察性能,然后在性能在第 5 到第 6 分钟左右开始急剧下降时停止 proc,然后再次重新启动部署。我们不认为这是一个直接的锁定问题,因为当我们使用批量大小时,性能总是在 5 到 6 分钟左右下降。

performance sql-server t-sql sql-server-2008-r2 performance-tuning

3
推荐指数
1
解决办法
2477
查看次数