копирование данных из огромной производственной таблицы

Компания, в которой я работаю, имеет несколько огромных таблиц журналов / журналов, которые записываются каждые 10 секунд или около того с транзакциями. . Я хотел бы скопировать много данных в этой таблице и удалить их из этой таблицы, потому что около 75% старых данных могут быть помещены в архивную таблицу или что-то в этом роде, но если я сделаю это неправильно, и таблица будет заблокирована вверх это было бы катастрофой.

В предыдущем вопросе один парень придумал что-то вроде этого, я хотел бы знать, что это не испортит все, достаточно ли намеков 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
5
задан master_cylinder 13 February 2012 в 21:10
поделиться