34.1. Ограничения

Используя пул соединений, учтите следующие ограничения:

  • SSL-подключения в настоящее время не поддерживаются.

  • Длительные транзакции приостанавливают выполнение других сеансов, назначенных тому же обслуживающему процессу, так как процесс не может обслуживать следующий сеанс до завершения текущей транзакции. Следует избегать таких транзакций в сеансах, использующих пул, и установить параметр конфигурации idle_in_transaction_session_timeout или client_connection_check_interval, чтобы простаивающие транзакции завершались по тайм-ауту. Если же заранее известно, какими пользователями или в каких базах данных будут выполняться длительные транзакции, для них можно использовать выделенные обслуживающие процессы.

  • Уровень ошибки FATAL: connection to client lost (ВАЖНО: подключение к клиенту потеряно) понижен до ERROR (ОШИБКА). Если такая ошибка будет перехватываться, Postgres Pro не сможет завершать зависшие транзакции по тайм-ауту.

  • Использование подготовленных транзакций (2PC) в сеансах, обслуживаемых пулом, возможно только если есть гарантия, что они будут завершаться в том же сеансе, в котором были подготовлены, и только при включённом параметре hold_prepared_transactions. Этот параметр допускает переключение процесса на другой сеанс только после того, как все подготовленные транзакции в текущем сеансе будут зафиксированы или отменены.

  • Встроенный пул соединений не поддерживает рекомендательные блокировки уровня сеанса (pg_advisory_lock) и выдаёт ошибку при попытке их использования.

  • Модули с внутренним состоянием, связанным с сеансом, такие как plantuner, могут не работать при включённом пуле соединений.

  • Пул соединений несовместим со следующими расширениями:

    • multimaster

    • in_memory

    • online_analyze

    • pg_variables

  • При включённом пуле соединений изменение конфигурации других сеансов, описанное в Подразделе 9.27.1, не допускается.

  • Асинхронные уведомления не поддерживаются, поэтому использовать SQL-команды NOTIFY, LISTEN и UNLISTEN, а также функцию pg_notify нельзя.

  • Когда пул соединений включён и обслуживает клиентские сеансы, отключение в режиме «Smart» осуществляется как «Fast».

  • Решения не поддерживаются, так как они используют собственный пул соединений.

  • Системы Windows в настоящее время не поддерживаются.

  • Тайм-аут idle_session_timeout не работает, когда включён пул соединений.

  • Триггеры событий входа не поддерживаются.

34.1. Limitations

When using connection pooling, take the following limitations into account:

  • SSL connections are currently not supported.

  • Long-running transactions can suspend other sessions assigned to the same backend, as the backend cannot serve another session until the current transaction is complete. It is recommended to avoid such transactions in pooled sessions and set the idle_in_transaction_session_timeout or client_connection_check_interval configuration parameters, so that idle transactions can be terminated by timeout. For databases or users that are likely to run long transactions, you can also use dedicated backends.

  • The level of the FATAL: connection to client lost error is lowered to ERROR. If such an error is trapped, Postgres Pro will fail to terminate hanging transactions by timeout.

  • Using prepared transactions (2PC) in pooled sessions is only possible if you ensure that they are completed by the same session that has prepared them, and enable the hold_prepared_transactions configuration parameter to forbid rescheduling the backend to another session until all prepared transactions in the current session are committed or rolled back.

  • Built-in connection pooler does not support advisory session-level locks (pg_advisory_lock) and returns an error if you try using them.

  • Modules that maintain the session state internally, such as plantuner, are not guaranteed to work with connection pooling enabled.

  • Connection pooling is incompatible with the following extensions:

    • multimaster

    • in_memory

    • online_analyze

    • pg_variables

  • Changing configuration of other sessions as explained in Section 9.27.1 is not allowed if connection pooling is enabled.

  • Asynchronous notifications are not supported, so you cannot use NOTIFY, LISTEN, and UNLISTEN SQL commands, or the pg_notify function.

  • When the connection pooler is enabled and serves client sessions, Smart shutdown is performed as Fast.

  • 1C solutions are not supported as they use their own built-in pooler.

  • Windows systems are currently not supported.

  • Closing connections due to idle_session_timeout is not supported when connection pooling is enabled.

  • Login event triggers are not supported.

FAQ