Это проблема, с которой мне часто приходилось сталкиваться в моем текущем проекте. Для нашего приложения скорость вставки является критическим узким местом. Однако мы обнаружили для подавляющего большинства пользователей баз данных скорость выбора в качестве основного узкого места, поэтому вы обнаружите, что есть больше ресурсов для решения этой проблемы.
Итак, вот несколько решений, которые мы придумали:
Во-первых, все решения включают использование команды postgres COPY . Использование COPY для импорта данных в postgres - самый быстрый из доступных методов. Однако драйвер JDBC по умолчанию в настоящее время не поддерживает COPY через сетевой сокет. Итак, если вы хотите использовать его, вам нужно сделать один из двух обходных путей:
- Драйвер JDBC, исправленный для поддержки COPY, такой как one .
- Если данные, которые вы вставляете, и база данных находятся на одном физическом компьютере, вы можете записать данные в файл в файловой системе, а затем использовать команду COPY для массового импорта данных.
Другие варианты увеличения скорости - использование JNI для доступа к API postgres, чтобы вы могли общаться через сокет unix, удалять индексы и проект pg_bulkload . Однако, в конце концов, если вы не внедрите COPY, вы всегда будете разочарованы производительностью.