Как создать пул соединений PostgreSQL с помощью Java?

Я пытаюсь использовать пул соединений, но я не понимаю, это правильно. Кто его реализует? Программное обеспечение, драйвер или база данных?

Как я могу запустить свою программу с помощью пула соединений? Я использую собственный драйвер PostgreSQL.

Мне нужен пример кода. Я делаю webcrawler, и у него много подключений к базе данных.

3 ответов


есть несколько вариантов:

какой бы вариант вы ни выбрали, в принципе он всегда работает одинаково: клиент поддерживает пул сетевых подключений к базе данных. Каждый раз, когда вы запрашиваете новое соединение с помощью DataSource, пул соединений будет подсматривать бесплатное соединение и давать вам. Когда вы думаете, что закрываете соединение, оно фактически будет выпущено и положено назад в бассеин. Другой поток теперь может использовать то же самое, уже установленное соединение.

объединение имеет много преимуществ:

  • нет никаких накладных расходов на TCP / IP-соединение, авторизацию и т. д. - это делается только один раз.

  • пул позаботится о сломанных соединениях, он также может проверить соединение, прежде чем давать его вам

  • наконец, число активных соединения с базой данных более стабильны, пул соединений должен отказаться от возврата соединения, если вы уже открыли слишком много


сам пул выполняется кодом, который находится между кодом приложения и драйвером базы данных.

кто ставит этот код есть? Может быть кто угодно. Это можете быть вы - есть библиотеки, такие как DBCP, которые ваш код может использовать для размещения пула поверх базы данных. Это может быть контейнер J2EE, как Tomcat или JBoss. Это может быть даже база данных - как указывает Tomasz, PostgreSQL поставляется с кодом пула.

похоже, вы не используете контейнер J2EE, в котором дело в тебе или базе данных. Лично я предпочел бы специальную реализацию пула, такую как DBCP, по сравнению с той, которая предоставляется базой данных. Программисты базы данных заботятся о БД; программисты пула заботятся о бассейне.

итак, получите DBCP (IMHO, это лучше, чем альтернативы) и используйте это.


Я думаю, вы ищете пул соединений на стороне клиента, который делает соединение с базой данных. Основная идея заключается в том, что установление нового соединения является дорогостоящим, поскольку оно включает в себя настройку соединения, настройку объектов БД, аутентификацию и т. д. и, следовательно, повторно использовать объекты подключения.