Как удалить просроченные данные из огромной таблицы, не допуская неконтролируемого роста файла журнала?

У меня огромная таблица (3 миллиарда строк), которая, к сожалению, в основном содержит просроченные данные. Я хочу просто удалить все эти просроченные строки, а остальные оставить.

Я могу выполнить такую ​​инструкцию:

delete from giganticTable where exp_date < getDate()

План выполнения каким-то образом предполагает, что около 400 миллионов строк будут удалены.

При выполнении, Это не только не завершается через час, но и файл журнала транзакций базы данных также увеличивается с 6 ГБ до 90 ГБ. Обратите внимание, что база данных находилась в модели восстановления с неполным протоколированием, пока это происходит. В конце концов я отменил этот запрос, так как уверен, что должен быть лучший способ сделать это.

У меня есть несколько таблиц, с которыми мне нужно выполнить аналогичную операцию. Каков самый быстрый и наиболее экономичный способ просто удалить эти строки, если у меня нет абсолютно никакого желания когда-либо их восстанавливать?

Обратите внимание, что я ' m с использованием Microsoft SQL Server 2005.

7
задан Brian Tompsett - 汤莱恩 24 July 2015 в 11:22
поделиться