Вопрос-ответ

Connection pooling options with JDBC: DBCP vs C3P0 [closed]

Параметры пула подключений с JDBC: DBCP против C3P0 [закрыты]

Какая библиотека пула подключений является наилучшей из доступных для Java / JDBC?

Я рассматриваю 2 основных кандидата (бесплатные / с открытым исходным кодом):

Я много читал о них в блогах и на других форумах, но не смог прийти к решению.

Существуют ли какие-либо подходящие альтернативы этим двум?

Переведено автоматически
Ответ 1

DBCP устарел и не соответствует производственному уровню. Некоторое время назад мы провели внутренний анализ двух из них, создав тестовое устройство, которое генерировало нагрузку и параллелизм для двух из них, чтобы оценить их пригодность в реальных условиях.

DBCP последовательно генерировал исключения в нашем тестовом приложении и изо всех сил пытался достичь уровней производительности, с которыми C3P0 был более чем способен справиться без каких-либо исключений.

C3P0 также надежно обрабатывал отключения DB и прозрачные переподключения при возобновлении, тогда как DBCP никогда не восстанавливал соединения, если ссылка была удалена из-под него. Что еще хуже, DBCP возвращал объекты подключения в приложение, для которого произошел сбой базового транспорта.

С тех пор мы использовали C3P0 в 4 основных потребительских веб-приложениях с высокой нагрузкой и никогда не оглядывались назад.

ОБНОВЛЕНИЕ: Оказывается, что после многих лет бездействия разработчики Apache Commons вывели DBCP из состояния покоя, и теперь это снова активно развивающийся проект. Таким образом, мой исходный пост может устареть.

При этом я еще не испытывал производительность этой новой обновленной библиотеки и не слышал о том, что она де-факто присутствует в какой-либо новой платформе приложений.

Ответ 2

Я приглашаю вас попробовать BoneCP - это бесплатно, с открытым исходным кодом и быстрее, чем доступные альтернативы (см. Раздел "Тесты").

Отказ от ответственности: Я автор, так что вы могли бы сказать, что я предвзят :-)

ОБНОВЛЕНИЕ: По состоянию на март 2010 года, все еще примерно на 35% быстрее, чем новый перезаписанный пул Apache DBCP ("tomcat jdbc"). Смотрите ссылку на Динамический тест в разделе "Тест".

Обновление # 2: (13 декабря ') После 4 лет пребывания на вершине появился гораздо более быстрый конкурент : https://github.com/brettwooldridge/HikariCP

Обновление # 3: (14 сентября) Пожалуйста, примите во внимание, что BoneCP на данный момент устарел, рекомендуем переключиться на HikariCP.

Обновление # 4: (15 апреля) - я больше не владею доменом jolbox.com

Ответ 3

У меня возникли проблемы с DBCP, когда истекло время ожидания подключений, поэтому я опробовал c3p0. Я собирался запустить это в производство, но затем начал тестирование производительности. Я обнаружил, что c3p0 работает ужасно. Я вообще не смог настроить его на хорошую работу. Я обнаружил, что он в два раза медленнее DBCP.

Затем я попробовал пул подключений Tomcat.

Это было в два раза быстрее, чем c3p0, и устранило другие проблемы, которые у меня возникали с DBCP. Я потратил много времени на изучение и тестирование 3 пулов. Мой совет при развертывании на Tomcat - использовать новый пул Tomcat JDBC.

Ответ 4

Что касается проблемы с автоматическим переподключением с DBCP, кто-нибудь пробовал использовать следующие 2 параметра конфигурации?

validationQuery="Some Query"

testOnBorrow=true
java jdbc