#java #jdbc #connection-pooling
#java #jdbc #пул соединений
Вопрос:
Я пишу проект ETL на JAVA. Я подключусь к исходной базе данных, получу данные только один раз, выполню некоторые преобразования и загружу данные в целевую базу данных.
Дело в том, что я не подключаюсь к исходной или целевой базе данных несколько раз подряд. Я просто подключаюсь один раз (используя JDBC), получаю нужные мне данные и закрываю соединение.
Должен ли я по-прежнему использовать пул соединений?
Спасибо за ваши мнения!
Ответ №1:
Пул соединений используется, чтобы обойти тот факт, что многим драйверам баз данных требуется много времени для создания соединения. Если вам нужно использовать его только в ближайшее время, а затем отказаться от него, накладные расходы могут быть существенными (как по времени, так и по процессору), если вам нужно много подключений. Просто повторное использование быстрее, чем создание нового.
Если у вас нет такой необходимости, нет причин настраивать пул подключений, если у вас его еще нет. Если у вас он уже есть, просто используйте его.
Ответ №2:
Я предполагаю, что в некоторых случаях использование нескольких потоков и одновременных подключений может улучшить пропускную способность вашего программного обеспечения, позволяя, например, использовать весь процессор вашего сервера RDBMS или клиентского ETL. Это также могло бы помочь, используя тот факт, что несколько таблиц могут физически размещаться на разных аппаратных средствах и, следовательно, могут быть доступны параллельно.
Реальное воздействие действительно будет зависеть от используемых вами компьютеров и архитектуры базы данных.
Будьте осторожны, чтобы обычно ETL имели ограничения на порядок, и выполнение нескольких действий одновременно не должно нарушать эти ограничения.
Редактировать : Пример этого. Вы можете настроить Oracle для выполнения каждого запроса с использованием нескольких ядер или нет. (В зависимости от конфигурации и лицензии, если я правильно понимаю). Итак, если одному запросу разрешено использовать только одно ядро, одновременное использование нескольких подключений позволит выполнять несколько запросов одновременно и лучше использовать ресурсы процессора сервера.