Что такое пул баз данных?

Я просто хотел узнать концепцию пула соединений с базой данных и как это достигается.

5 ответов


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

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

обратитесь к следующей диаграмме для следующих нескольких абзацев:

  +---------+
  |         |
  | Clients |
+---------+ |
|         |-+  (1)   +------+   (3)    +----------+
| Clients | ===#===> | Open | =======> | RealOpen |
|         |    |     +------+          +----------+
+---------+    |         ^
               |         | (2)
               |     /------\
               |     | Pool |
               |     \------/
           (4) |         ^
               |         | (5)
               |     +-------+   (6)   +-----------+
               #===> | Close | ======> | RealClose |
                     +-------+         +-----------+

в простейшей форме это просто аналогичный вызов API (1) для вызова API с открытым соединением, который похож на "реальный". Это сначала проверяет пул на наличие подходящего соединения (2) и, если оно доступно, оно предоставляется клиенту. В противном случае создается новый (3).

аналогично, есть вызов close API (4), который фактически не вызывает реальные close-connection, скорее он помещает соединение в пул (5) для последующего использования. В какой-то момент соединения в пуле могут быть на самом деле закрытые (6).

Это довольно упрощенное объяснение. Реальные реализации могут обрабатывать соединения с несколькими серверами и несколькими учетными записями пользователей, они могут предварительно выделять некоторые базовые соединения, поэтому некоторые из них готовы немедленно, и они могут фактически закрывать старые соединения, когда шаблон использования затихает.


изображения говорят тысячу слов (paxdiablo дал удивительное описание):

alt text

источник


вы можете использовать библиотеку Apache commons Для реализации пула соединений прозрачно:http://commons.apache.org/dbcp/

DBCP также поддерживает пул гибернации:http://www.informit.com/articles/article.aspx?p=353736&seqNum=4


концепция объединения соединений не только в Java, но и на многих языках программирования. Создание нового объекта подключения является дорогостоящим, поэтому фиксированное количество подключений выполняется и поддерживается в жизненном цикле создание виртуального пула Java Просто (http://javajust.com/javaques.html ) см. вопрос 14 на этой странице


Как следует из названия. Если несколько человек хотят плавать, они могут плавать в одном и том же бассейне, имеет ли смысл строить новый бассейн каждый раз, когда кто-то добавляет ? Время и стоимость-приоритет.