gpt4 book ai didi

sql-server - WAITFOR 对其他流程和事务有什么影响?

转载 作者:行者123 更新时间:2023-12-02 10:42:36 26 4
gpt4 key购买 nike

我试图找出T-SQL中WAITFOR的性能或内部实现,已经经历了MSDN Stackoverflow 和其他网站没有运气,这是我的问题

对于下面的代码,我想从表 DUMMY 中删除前 10,000 行。我想让这个删除作业对数据库的其他作业的性能影响尽可能小,并优先考虑其他作业(如果有)。所以我让它一次删除 100 行,并在两个相邻的删除中使用休眠时间执行 100 次。

问题:

  1. WAITFOR阻塞时间内,该交易会消耗CPU还是只是空闲并等待1秒后某个事件启动?

  2. 在这 1 秒内,如果有其他事务尝试在 DUMMY 表上进行 INSERT/UPDATE,谁获得优先权?

非常感谢您的帮助或对此的任何见解

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

最佳答案

  • 它不消耗任何CPU
  • 状态 = 已暂停

您可以通过 2 个查询窗口看到这一点:

SELECT @@SPID;
GO
WAITFOR DELAY '000:03:00'; -- three minutes

然后在另一个

SELECT * FROM sys.sysprocesses S WHERE S.spid = 53; -- replace 53

注意:SQL Server 2012 SP1,但据我所知行为是相同的

第2点,抱歉错过了

当 WAITFOR 运行时,另一个 session 将修改该表。这不是锁。

关于sql-server - WAITFOR 对其他流程和事务有什么影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16716621/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com