2016-06-21 3 views
1

У меня около 10 миллиардов данных системы (инфраструктуры) в SQL Server последних 5 лет, и я хочу, чтобы эти данные постепенно увеличивались в каждый уик-энд, в то же время выполнялись и другие задания, выполняющие обслуживания и ввода данных этого дня в warehouse.Лучший способ очистить несколько миллионов данных в SQL Server

Процесс очистки будет удалять около 600 000 записей каждый уик-энд, но он будет сканировать весь хранилище данных, чтобы он извлек эти 600 000 записей.

Пожалуйста, предложите оптимальный способ сделать это.

+0

Вы очищаете записи по их дате? –

+0

Это то, что разделы для (или, по крайней мере, одна причина для их использования) – Jamiec

+0

Возможно, лучше всего, если бы эта таблица была разделена. Затем каждую неделю скрипт создает новый раздел на следующей неделе и отбрасывает раздел устаревшей недели. – LukStorms

ответ

0

Я бы поэтапный подход, как указано в статье:

http://sqlperformance.com/2013/03/io-subsystem/chunk-deletes

Количество записей удаляемых на партию настраивается. Вы хотите протестировать разные размеры в тестовой среде, чтобы получить оптимальный размер для вашего набора данных.

+0

Также необходимо позаботиться о размере файла журнала, если мы удалим записи навалом в одном снимке, это будет полная таблица протоколов транскрипции. –

+0

Правда. Как часто вы берете резервные копии журнала транзакций? –

1

Переключение разделов на SQL Server позволяет вам мгновенно обменивать куски данных в/из вашей таблицы. Существует множество хороших учебников, вот один из них: https://www.brentozar.com/archive/2013/01/sql-server-table-partitioning-tutorial-videos-and-scripts/

Раздел в SQL Server физически разделяет таблицу на основе схемы разделов, чаще всего используя диапазон дат. Поэтому замена разделов в/из вашей таблицы является скорее логическим переключением, чем физическим коммутатором, и поэтому невероятно быстрым.

Если у вас нет SQL Server Enterprise Edition, вы должны убедиться, что поле, которое вы используете для идентификации записей для удаления, индексируется. С большими удалениями, нарушение удаления может повысить производительность, поэтому, возможно, вы создаете цикл, который удаляет 1 день за раз, 7 раз, а не всю неделю сразу.

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