Мне нужно вставить 40 миллионов записей из .csv
файла в базу данных, а ниже - процесс, который я выполнил.
Служба Windows 1:
SqlBulkCopy
. Служба Windows 2.
Служба Windows 1 занимает около 30-40 минут, но для работы с Windows 2 требуется около 5 часов для выполнения задачи (минимальное время). У меня есть 2 способа сделать это, но не могу решить, что лучше и открыто для предложений.
Мое самое большое сомнение здесь в том, что мы используем транзакции в процедуре и будем асинхронно работать с ним, потому что, согласно моему предположению, используя блокировки транзакций, таблица и другие процессы должны работать над этим.
Я думаю, что вы используете неправильный инструмент для этой работы. Приложения c # могут сделать трюк, но есть гораздо более эффективный способ сделать это с помощью служб интеграции.
Я угадываю здесь, но эти таблицы в середине должны трансформироваться или проверяться, или, может быть, для переноса импорта?
SSIS может выполнять все эти действия, используя лимит журнала и инструменты SQL Bulk Import. В настоящее время я делаю импорт данных в больницу, который составляет около 8 000 000 записей каждую ночь, и мне требуется несколько минут, чтобы не делать часы.
Хорошее чтение тоже о том, как SQL имеет дело с такими большими входами данных, эта статья