Вопрос с собеседования · Базы данных

Зачем нужен пул соединений и почему его размер обычно невелик?

MiddleJDBC
Ещё спрашивают так:
  • Как выбрать размер HikariCP?
Коротко

Соединение дорого создавать (TCP, TLS, аутентификация, процесс на сервере), а лишние активные соединения не ускоряют базу: её параллелизм ограничен ядрами и дисками.

  • Отправная точка: ядра базы × 2 + диски
  • Сумма пулов всех экземпляров не должна превышать возможности базы — иначе PgBouncer
  • Ожидание в пуле видно и управляемо; очередь внутри базы — нет

А ещё Не держать соединение во время внешних вызовов

Подробно

Открытие соединения включает сетевое рукопожатие, аутентификацию и выделение ресурсов на стороне СУБД, поэтому создавать его на каждый запрос недопустимо. Но и раздувать пул бессмысленно: параллелизм базы ограничен процессорами и вводом-выводом, а лишние активные соединения добавляют переключений контекста и конкуренции за блокировки — пропускная способность падает, а задержки растут. Практический ориентир для OLTP — десятки соединений, а не сотни; при этом суммарно по всем инстансам приложения пул не должен превышать лимит базы. Занятый пул при низкой загрузке CPU приложения — верный признак, что узкое место именно здесь.

Что хотят услышать

  • Цена соединения и зачем пул.
  • Почему пул должен быть маленьким.
  • Сумма пулов экземпляров и прокси-пулер.

Частые ошибки

  • Наращивать пул при росте задержек — обычно становится хуже.
  • Не учитывать, что пул умножается на число инстансов приложения.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✗Пул нужен для кэширования результатов запросов
  • ✓Открывать соединение дорого, а лишние соединения сверх возможностей БД лишь усиливают конкуренцию
  • ✗Размер пула должен совпадать с числом одновременных пользователей приложения
  • ✗Пул нужен только для распределённых транзакций

Что спросят дальше

  • Что произойдёт при исчерпании пула?
  • Почему долгие транзакции особенно вредны для пула?

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования