Несколько указателей (два моих цента):
Подумайте о том, чтобы разделить эту таблицу, похожую на технику «медленно меняющегося измерения», на несколько «промежуточных» таблиц, в зависимости от места назначения «системной таблицы»; затем массовая загрузка ваших системных таблиц - вместо записи за записью.
Удалите таблицу ввода перед массовой загрузкой и создайте заново, чтобы избавиться от индексов и т. Д.
Не назначать ненужные (ключи) индексы для этой таблицы перед загрузкой.
Рассмотрите возможность переключения «модели восстановления» БД в режим массовой загрузки, чтобы не регистрировать массовые транзакции.
Можно ли использовать задачу SSIS (ETL) для загрузки, очистки и проверки?
UPDATE:
Вот типичный сценарий ETL - хорошо, зависит от того, с кем вы говорите.
1 . Извлечение в flat_file_1
(у вас это есть)
2 * * тысячи двадцать-два. Очистить flat_file_1 --> SSIS --> flat_file_2
(вы можете подтвердить здесь)
3 . Соответствует flat_file_2 --> SSIS --> flat_file_3
(применяются все стандарты компании)
4 . Доставка flat_file_3 --> SSIS (bulk) --> db.ETL.StagingTables
(несколько, по одному на пункт назначения)
4B . insert into destination_table select * from db.ETL.StagingTable
(массовая загрузка вашего конечного пункта назначения)
Таким образом, если время процесса (1-4) истекло, вы всегда можете начать с промежуточного файла. Вы также можете проверять каждый этап и создавать файлы отчетов из SSIS для каждого этапа, чтобы контролировать качество данных. Операции 1-3 в основном медленные; здесь они происходят вне базы данных и могут быть выполнены на отдельном сервере. Если вы архивируете flat_file(1-3)
, у вас также есть контрольный журнал того, что происходит - хорошо для отладки. :)