Настройка пула соединений

Для управления пулом соединений кластеры PostgreSQL используют PgBouncer. PgBouncer минимизирует издержки при установке новых подключений к PostgreSQL. Пул соединений можно настроить при создании кластера и в процессе его работы – на странице Настройки.

Для настройки выберите значения для параметров:

  • режим пулинга – стратегия соединения сервера приложения с базой данных;
  • размер пула – количество одновременных соединений от пулера к postgresql разрешено.

Режимы пулинга

Чтобы не нарушать семантику транзакций при переключении подключений, pgbouncer поддерживает несколько режимов пулов:

  • Transaction — соединение назначено на клиента на время транзакции. Режим позволяет каждому клиенту использовать пул в течение одной транзакции за раз.

    Если в пуле недостаточно доступных соединений для обработки отправленных транзакций, дополнительные транзакции ставятся в очередь для запуска, как только соединения станут доступны.

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

    Этот режим включен по умолчанию.

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

    Если в пуле недостаточно доступных подключений для обработки всех подключающихся клиентов, дополнительные клиенты ставятся в очередь. Они будут подключены после отключения подключенных клиентов.

    Режим сеанса полезен, когда ваше приложение использует подготовленные операторы, рекомендательные блокировки, прослушивание/уведомление или другие функции, которые работают на уровне сеанса, а не на уровне транзакции.

  • Statement — транзакции с несколькими операторами запрещены.

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

    Режим оператора полезен, когда вы принудительно выполняете автоматическую фиксацию для каждого клиента, что означает, что каждая транзакция ограничена одним оператором.

Размер пула

Размер пула отвечает за то, какое количество одновременных соединений от пулера к PostgreSQL разрешено.

По умолчанию размер пула равен 30, это значение можно увеличить до 50.