Пул соединений и соединение JDBC по потокам

Какой из этих подходов лучше: пул соединений или соединения JDBC для отдельных потоков?


person java_geek    schedule 24.05.2010    source источник


Ответы (3)


Пул соединений наверняка и почти всегда.

Создание нового подключения к базе данных очень дорого для производительности. Причем разные движки БД (в зависимости от лицензирования или просто настроек) имеют разное максимальное количество подключений (иногда даже 1, обычно не более 50).

Единственная причина использовать Per-Thread-соединения, если вы знаете, что существует небольшое количество постоянных потоков (например, 10). Я не могу представить эту ситуацию в реальном мире.

person Roman    schedule 24.05.2010

Определенно пул соединений. Совершенно нет причин создавать новое соединение для каждого потока. Но может иметь смысл использовать одно и то же соединение, например, для всего HTTP-запроса (особенно, если вам нужны транзакции).

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

person Stef    schedule 01.09.2011

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

Для большинства настольных приложений, работающих с базой данных, пул соединений бесполезен, поскольку вам нужно только одно соединение, а наличие нескольких соединений потребляет ресурсы на сервере БД. (Умножьте это на количество пользователей.) Здесь можно выбрать одно постоянное соединение или просто создать соединение по запросу. Первый приводит к более быстрым запросам, поскольку у вас нет накладных расходов на создание и разрыв соединения. Второй - медленнее, но и менее требователен к серверу БД.

person Community    schedule 01.09.2011