Серьезная реляционная база данных , такая как, например, Postgres , предложит функции для заполнения большой базы данных.
Массовая загрузка
Ищите команды, которые читают внешние данные, которые будут загружены в таблицу с соответствующей структурой поля. Данные перемещаются непосредственно из файла файловой системы ОС прямо в таблицу. Это значительно быстрее, чем загрузка отдельных строк обычным SQL INSERT
. Такие команды не стандартизированы, поэтому вы должны искать собственные команды в вашем конкретном ядре базы данных.
В Postgres это будет команда COPY
.
Ищите команды, которые откладывают применение правил отношения внешнего ключа до момента загрузки данных.
В Postgres используйте SET CONSTRAINTS … DEFERRED
, чтобы не проверять ограничения во время каждого оператора, и вместо этого дождитесь окончания транзакции.
В качестве альтернативы, если в вашей базе данных отсутствует такая функция, как часть процедуры массового импорта, вы можете удалить свои ограничения до, а затем восстановить их после. Но будьте осторожны, это может повлиять на все другие транзакции во всех других подключениях к базе данных. Если вы знаете, что в базе данных нет других пользователей, возможно, это работоспособно.
Другие вопросы
Чтобы узнать о других проблемах, см. Заполнение базы данных в документации Postgres (независимо от того, используете вы Postgres или нет).
- Отключить автокоммит
- Используйте
COPY
(для массового импорта, упомянутого выше)
- Удалить индексы
- Удалить ограничения внешнего ключа (упомянутые выше)
- Увеличение
maintenance_work_mem
(изменение выделения памяти вашего механизма базы данных)
- Увеличение max_wal_size (изменение конфигурации журнала опережающей записи вашего ядра СУБД)
- Отключить архивную и потоковую репликацию WAL (рассмотрите возможность перемещения копии вашей базы данных на сервер (ы) репликатора, а не для репликации перемещать массовые данные)
- Запустить АНАЛИЗ после (напомните вашему ядру базы данных, чтобы он изучал новое состояние данных для использования его планировщиком запросов)
Миграция базы данных
Кстати, вы, вероятно, найдете инструмент переноса базы данных, полезный для создания таблиц и столбцов и, возможно, для загрузки данных. Рассмотрим такие инструменты, как Flyway или Liquibase .