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.26.1, не допускается.

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

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

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

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