Как избавиться от больших таблиц с наименьшим влиянием на доставку журналов?

Dec 31 2020

Имейте две полубольшие связанные таблицы (284 6876 609 строк - 156 785 176 КБ и 4 2628 162 строки - 2 212 464 КБ) в отправляемой базе данных журнала, которую необходимо либо очистить, либо удалить. Как я могу избавиться от этих двух таблиц, минимизируя влияние на доставку журналов?

Ответы

11 J.D. Dec 31 2020 at 21:08

Если вы DROPиспользуете таблицы, это приведет к созданию минимального количества журналов, потому что это не заставляет немедленно произойти сборку мусора в используемом пространстве, а просто просто удаляет ссылку. Точно так же вы можете добиться того же результата с помощью TRUNCATE(хотя я думаю, что на больших таблицах накладных расходов может быть больше DROP, мне придется исследовать это и соответствующим образом обновить свой ответ).

Это действительно хорошая статья, детали почему TRUNCATEи DROPоперация seemlessly и быстро произвести минимальные журналы, что связанно с особенностью SQL Server называется отложенным падение .

В любом случае, избегайте, DELETEиначе это приведет к созданию тонны журналов, которые нужно будет отправить и повторно применить в целевой базе данных.

На этот вопрос StackOverflow есть несколько ответов с хорошей информацией об эффективном удалении данных из большой таблицы (некоторые, возможно, не связаны конкретно с вашим вопросом, но подходят для справок в будущем или других пользователей с аналогичными проблемами).