我目前工作的公司有一些巨大的日志/记录表,每隔10秒左右就会写入一些事务。我想从这个表中复制出很多数据,并从该表中删除它们,因为约75%的旧数据可以放在归档表中,但如果我操作不当并且锁定了该表,那将是一场灾难。
在之前的一个问题中,有人提出了类似以下的建议,我想知道这样做是否会导致问题,nolock提示是否足以确保安全并使所有写操作正常工作?如果不是,我应该怎么做?
在之前的一个问题中,有人提出了类似以下的建议,我想知道这样做是否会导致问题,nolock提示是否足以确保安全并使所有写操作正常工作?如果不是,我应该怎么做?
set identity_insert newtable on
DECLARE @StartID bigint, @LastID bigint, @EndID bigint
select @StartID = max(id)+1
from newtable
select @LastID = max(ID)
from oldtable
while @StartID < @LastID
begin
set @EndID = @StartID + 1000000
insert into newtable (FIELDS,GO,HERE)
select FIELDS,GO,HERE from oldtable (NOLOCK)
where id BETWEEN @StartID AND @EndId
set @StartID = @EndID + 1
end
set identity_insert newtable off
go