Я запускаю следующую команду для удаления строк из партий из большой таблицы (150 миллионов строк):
DECLARE @RowCount int
WHILE 1=1
BEGIN
DELETE TOP (10000) t1
FROM table t1
INNER JOIN table2 t2 ON t2.PrimaryKey = t1.PrimaryKey
WHERE t1.YearProcessed <= 2007
SET @RowCount = @@ROWCOUNT
IF (@RowCount < 10000) BREAK
END
Эта таблица ВЫСОКО используется. Тем не менее, он удаляет записи, но также вызывает блокировку некоторых записей, тем самым бросая ошибки пользователю (что неприемлемо в той среде, в которой мы находимся).
Как удалить старые записи, не вызывая блокировок? Должен ли я уменьшить размер партии от 10000 записей до 1000? Как это повлияет на размеры журнала журналов (у нас осталось очень мало места на жестком диске для большого роста журнала).
Любые предложения?