2015-03-31 2 views
0

У меня есть таблица размером 13 ТБ (по историческим причинам).Самый быстрый способ вставить огромное количество данных в секционированную таблицу SQL Server

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

Вопрос в том, что является самым быстрым способом загрузки данных в пустую секционированную таблицу (секционированную по месяцам)?

Мои мысли:

  1. заливка таблицы, заполняя ломтиков разделов. Я создаю две или три (в зависимости от таблицы ввода/вывода) temp tables и загружаю данные через SSIS OLEDB (openrowset bulk) в три временные таблицы одновременно. После этого я включаю разделы и продолжаю следующие три.

  2. Вставьте последние и самые старые данные сразу через «нормальный» вставить (я не думаю, что кластерный индекс нравится)

  3. ???

Итак, что было бы самым быстрым и быстрым способом?

ответ

0

Самый большой коэффициент усиления, который вы можете достичь, - это отбросить все индексы в целевой таблице, загрузить данные (возможно, используя выбор 1), а затем перестроить все ваши индексы (сначала кластерный индекс). Храните исходные данные и целевые файлы mdf/ndf на отдельных физических дисках (надеюсь, RAID).

Вы можете создавать скрипты по индексам, щелкая правой кнопкой мыши по индексу и выбирая индекс индекса сценария. Убедитесь, что если индекс разделен на разделы, информация о порции включена.

0

Наибольший выигрыш будет заключаться в использовании Bulk Insert Function, который предназначен для работы с наборами, а не с операциями на основе строк. Я не знаю, где вы импортируете данные, но я думаю, что это будет резервная копия, с коррупцией.

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