我试图找出 T-SQL 中 WAITFOR 的性能或内部实现,已经通过MSDN和 Stackoverflow 和其他网站没有运气,这是我的问题
对于下面的代码,我想从 table 中删除前 10,000 行DUMMY
。我想让这个删除作业对数据库的其他作业的性能影响尽可能小,并优先考虑其他作业(如果有的话)。所以我让它一次删除 100 行,并在两个相邻的删除中使用睡眠时间执行 100 次。
问题:
在
WAITFOR
阻塞时间内,该事务会消耗 CPU 还是只是空闲并等待 1 秒后某个事件启动?在那 1 秒内,如果有其他事务试图
INSERT/UPDATE
上DUMMY
表,谁获得优先权?
非常感谢您的帮助或对此的任何见解
declare @cnt int
set @cnt = 0
while @cnt < 100
begin
delete top 100 from DUMMYTABLE where FOO = 'BAR'
set @cnt = @cnt + 1
waitfor delay '00:00:01'
end