Ответ 1
Пул соединений с базами данных - это метод, используемый для того, чтобы открывать подключения к базам данных, чтобы их можно было повторно использовать другими.
Как правило, открытие соединения с базой данных является дорогостоящей операцией, особенно если база данных удалена. Вы должны открыть сетевые сеансы, пройти проверку подлинности, проверить авторизацию и т.д. Объединение поддерживает активные соединения, так что при последующем запросе соединения один из активных используется вместо того, чтобы создавать другой.
Обратитесь к следующей диаграмме для следующих нескольких абзацев:
+---------+
| |
| Clients |
+---------+ |
| |-+ (1) +------+ (3) +----------+
| Clients | ===#===> | Open | =======> | RealOpen |
| | | +------+ +----------+
+---------+ | ^
| | (2)
| /------\
| | Pool |
| \------/
(4) | ^
| | (5)
| +-------+ (6) +-----------+
#===> | Close | ======> | RealClose |
+-------+ +-----------+
В нем простейшая форма, это просто похожий вызов API (1) на вызов API открытого соединения, который похож на "реальный". Сначала проверяется пул для подходящего соединения (2) и, если таковой имеется, предоставляется клиенту. В противном случае создается новый (3).
Аналогично, существует закрытый API-вызов (4), который фактически не вызывает реальное закрытое соединение, вместо этого он устанавливает соединение в пул (5) для последующего использования. В какой-то момент соединения в пуле могут быть фактически закрыты (6).
Это довольно упрощенное объяснение. Реальные реализации могут обрабатывать соединения с несколькими серверами и несколькими учетными записями пользователей, они могут предварительно выделить некоторые базовые соединения, так что некоторые из них будут готовы немедленно, и они могут фактически закрыть старые соединения, когда шаблон использования успокоится.