Короткий ответ Connection pool — это заранее созданный и переиспользуемый набор открытых соединений к БД, который избегает дорогостоящего создания нового TCP/TLS-соединения на каждый запрос; если все соединения в пуле заняты и достигнут лимит, новые запросы либо ждут освобождения соединения с таймаутом, либо сразу получают ошибку. Как это работает подробнее Пул выдаёт соединение по запросу (checkout), приложение выполняет запросы и возвращает соединение в пул (checkin) по завершении работы; при превышении лимита без доступных соединений вызывающий код блокируется до pool_timeout или получает исключение пула. Пример кода Что использовать на практике Практика. Размер пула подбирают с учётом числа воркеров приложения, ограничения max_connections на стороне PostgreSQL и реального профиля конкурентности; для большого числа коротких подключений часто ставят внешний пулер (PgBouncer) перед PostgreSQL. Подводные камни Ошибка. Забывают возвращать соединение/сессию в пул (не закрывают сессию в finally), из-за чего пул