Я застрял в проблеме, из-за которой запись данных в PostgreSQL идет очень медленно.
Я разработал свое приложение на Java (с использованием JDBC) для вставки данных в базу данных PostgreSQL.Это хорошо работает на нашем удаленном сервере разработки.Однако после развертывания на производственном сервере возникает проблема.
Скорость вставки PostgreSQL на рабочий сервер составляет всего ~150 records/s for 200000K records
, а на сервере разработки - ~1000 records/s for the same data set
.
Во-первых, я попытался изменить конфигурацию в postgresql.conf
следующим образом:
effective_cache_size = 4GB
max_wal_size = 2GB
work_mem = 128MB
shared buffers = 512MB
После того, как я изменил конфигурацию и перезапустился, это влияет только на скорость запроса, в то время как скорость вставки не изменяется (~ 150 записей / с).
У меня естьпроверил информацию о памяти моего сервера, там много свободной памяти ~ 4Гб.Устройство вставки использует только 0,5% от 8 ГБ (~ 40 МБ).
Итак, мои вопросы:
Является ли это проблемой диска хранения, например, SSD и HDD, виртуального и физического и т. Д.?Почему скорость вставки все еще очень низкая, хотя я изменил конфигурацию?Есть ли способ увеличить скорость вставки?
Примечание: проблема не связана со структурой запроса вставки.Я использовал тот же запрос в том же состоянии в другом месте (я настроил среду на 2 серверах таким же образом).Я не знаю, почему сервер DEVELOPMENT (4 ГБ) работает лучше, чем сервер PRODUCTION (8 ГБ).