Я работаю над системой, которая загружает данные из облачной системы в локальную базу данных (PostgreSQL, MySQL, ...). Теперь у меня проблема с производительностью PostgreSQL, потому что для ввода данных требуется много времени.Медленная вставка на PostgreSQL с использованием JDBC
Число столбцов и размер данных могут отличаться. В примере проекта у меня есть таблица с ок. 170 столбцов. Существует один уникальный индекс - но даже после падения индекса скорость вставки не изменилась.
Я использую драйвер JDBC для подключения к базе данных, и я вставляю данные партиями по 250 строк (используя NamedParameterJdbcTemplate).
Мне потребовалось ок. 18 секунд для ввода данных на Postgres. Тот же набор данных на MySQL занял у меня всего лишь. Это огромная разница - откуда она взялась? Является ли драйвер Postgres JDBC медленным? Может ли он быть настроен каким-то образом, чтобы сделать его быстрее? Я что-то пропустил? Разница между Postgres и MySQL настолько велика. Любые другие идеи, как сделать это быстрее?
Я сделал образец проекта, который доступен на Github - https://github.com/varad/postgresql-vs-mysql. Все происходит в LetsGo class методом «run».
Вы могли бы включить больше отладки, чтобы увидеть, что на самом деле медленное? (вставка, фиксация, подключение)? для отладки в java (для драйвера) loglevel = 2 (https://jdbc.postgresql.org/documentation/80/connect.html) для регистрации на стороне сервера https://www.drupal.org/node/560192 –
В каких версиях мы говорим? Вы пытались совершить транзакцию? – m0skit0
Кроме того, вы пытались перевернуть и вставить его сначала в MySQL, и посмотреть, что происходит (например, 'letsGo.run (Type.MYSQL); letGo.run (Type.POSTGRES);')? Также как вы проверяете время? – m0skit0