Перейти к содержанию

Возможности

Возможности PgBouncer: режимы пула и совместимость с SQL
  • Несколько уровней строгости при перераспределении соединений:

    Сеансовый режим пула
    Наиболее щадящий метод. При подключении клиента ему назначается серверное соединение на всё время клиентского соединения. После отключения клиента серверное соединение возвращается в пул. Этот режим поддерживает все возможности PostgreSQL.
    Транзакционный режим пула
    Серверное соединение назначается клиенту только на время транзакции. Когда PgBouncer определяет завершение транзакции, серверное соединение возвращается в пул. Этот режим нарушает работу некоторых сеансовых возможностей PostgreSQL. Его можно использовать, только если приложение не применяет несовместимые возможности. Они перечислены в таблице ниже.
    Режим пула на уровне операторов
    Наиболее строгий метод. Это транзакционный режим пула с дополнительным ограничением: транзакции из нескольких операторов запрещены. Такой режим принудительно обеспечивает клиентский режим «autocommit» и в основном предназначен для PL/Proxy.
  • Низкое потребление памяти (по умолчанию 2 kB на соединение), поскольку PgBouncer не требуется получать пакеты целиком.

  • Нет привязки к одному серверу бэкенда. Целевые базы данных могут находиться на разных узлах.

  • Для большинства параметров поддерживается изменение конфигурации без остановки обслуживания.

  • Поддерживается перезапуск и обновление без остановки обслуживания и разрыва клиентских соединений.


Совместимость возможностей SQL с режимами пула

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

ВозможностьСеансовый режимТранзакционный режим
Параметры запуска 1ДаДа
SET/RESETДаНикогда
LISTENДаНикогда
NOTIFYДаДа
WITHOUT HOLD CURSORДаДа
WITH HOLD CURSORДаНикогда
Подготовленные планы протоколаДаДа 2
PREPARE / DEALLOCATEДаНикогда
Временные таблицы ON COMMIT DROPДаДа
Временные таблицы PRESERVE/DELETE ROWSДаНикогда
Сброс кэшированного планаДаДа
Оператор LOADДаНикогда
Сеансовые рекомендательные блокировкиДаНикогда

  1. Параметры запуска: client_encoding, DateStyle, IntervalStyle, Timezone, standard_conforming_strings и application_name. PgBouncer отслеживает их изменения и поэтому может гарантировать согласованные значения для клиента. Если PgBouncer должен поддерживать дополнительные параметры, см. track_extra_parameters и ignore_startup_parameters . ↩︎

  2. Чтобы включить эту поддержку, параметру max_prepared_statements необходимо присвоить ненулевое значение. ↩︎