问题描述
|
如果我尝试从表中删除数据早午餐。说
DELETE FROM myTable Where CreationDate < GetDate()
需要几个小时才能删除,此表是否将被锁定并且不会发生新的插入?
该表不会自我引用。我假设删除时仍可以插入新数据。删除sql会使用排他锁来阻止对表的所有访问吗?
谢谢
解决方法
您可以批处理它们,以防止其锁定整个表:
WHILE 1 = 1
BEGIN
DELETE TOP 10000 FROM myTable WHERE CreationDate < GetDate()
IF @@ROWCOUNT = 0
BREAK
END
,有很多事情可以改变这种行为。但是,如果您的意思是说超过5K记录,那么它可能会锁定。您可以通过使用较小的批次或指定不会锁定的隔离级别来避免这种情况。