2017-02-14 3 views
3

Я не очень хорошо знаком с доставкой журнала, и мне нужно удалить 70 миллионов записей из таблицы, содержащей 71 миллион записей.Удаление миллионов записей при использовании доставки журналов - SQL Server

Мой вопрос, как будет регистрировать доставку реагировать, если я делаю следующее:

  1. Копирование миллионов записей, которые я хочу сохранить в новой таблице
  2. усечение исходной таблицы (усечение Таблица OriginalTable)
  3. Вставить в исходной таблице миллионов записей

Мы ограниченное пространство для журналов. Что будет регистрироваться и отправляться?

Благодаря

+0

Я предполагаю, что вы должны удалить из базы данных Primary, и отправка журналов будет отражать изменения. –

+0

Вы также можете создать новую таблицу, назовите ее Shipping_NEW или что-то еще и просто вставьте записи, которые вы хотите сохранить непосредственно в нее из своей производственной таблицы , Затем переименуйте старую таблицу в нечто вроде Shipping_BAK ... переименуйте Shipping_NEW в Shipping (сделав его производственной таблицей). Это избавит вас от пространства журналов от двух вставок. Номинал, если вы спросите меня, но поскольку вы, похоже, были обеспокоены, это еще один вариант. Затем вы можете оставить или сохранить свой старый стол. – scsimon

ответ

3

Это должно быть прекрасно - до тех пор, пока вы не усечение журнала, а просто усечение таблицы, доставка журналов должна отставать.

Усечения регистрируются, только регистрируются эффективно (см. https://dba.stackexchange.com/questions/55834/what-does-a-truncate-table-write-to-the-log-file-in-sql-server/55882). Вы получите регистрацию для миллионов вставок, но это, вероятно, примерно так же эффективно, как вы можете получить.

+0

Спасибо, после вашего ответа я был уверен, что продолжу процедуру. Я все прошел хорошо, файл журнала был всего 225 мб, для усечения и вставки около миллиона записей. – freddoo

Смежные вопросы