Общие сведения об обработке подключений

Завершено

Postgres использует модель подключения на основе процессов. Для установки подключения задействуется операционная система и выделяется небольшой объем памяти. Каждый SQL-запрос выполняется с помощью текущего подключения.

Состояния подключения

Подключение может находиться в одном из четырех состояний:

  • активные — активные подключения, которые в настоящее время выполняют запросы.
  • простой — открытые подключения, которые не используются.
  • неактивно в транзакции — ожидание подключения без выполнения каких-либо действий. Используйте pg_stat_activity , чтобы понять, что делает подключение, и как долго он находится в этом состоянии.
  • бездействия в транзакции (прервано) — подключения, которые ранее были бездействующими в транзакции, но теперь прерваны.

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

Максимальное количество соединений

PostgreSQL ограничивает максимальное число одновременных подключений к серверу в любое время с помощью параметра сервера max_connections. В База данных Azure для PostgreSQL значение по умолчанию зависит от уровня вычислений. Допустимое значение — от 25 до 5000.

Локальная реализация PostgreSQL резервирует некоторые подключения для суперпользования для поддержания целостности базы данных. Обычно это резервирование будет 15 % от значения max_connections .

База данных Azure для PostgreSQL — это управляемое решение, и оно автоматически резервирует три подключения для мониторинга гибкого сервера.

Примечание.

В Базе данных Azure для PostgreSQL отсутствует параметр сервера для управления superuser_reserved_connections.

Организация пулов соединений

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

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

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

PGBouncer— это решение для пула подключений, встроенное в База данных Azure для PostgreSQL. Чтобы включить PgBouncer, выполните следующие действия.

  1. На портале Azure перейдите к серверу Базы данных Azure для PostgreSQL.
  2. В меню слева выберите Параметры сервера.
  3. В строке поиска найдите PgBouncer.
  4. Задайте для параметра pgbouncer.enabled значение TRUE, чтобы включить PgBouncer. Для этого параметра не требуется перезапуск сервера.
  5. Задайте в качестве параметра pgbouncer.default_pool_size количество необходимых подключений для каждой пары пользователь/база данных. Число по умолчанию — 50.
  6. Задайте для параметра pgBouncer.pool_mode значение TRANSACTION.

Примечание.

PgBouncer поддерживается на уровнях вычислительных ресурсов общего назначения и с оптимизацией для операций в памяти в сетях общего и частного доступа. PgBouncer не поддерживается на уровне вычислений "С увеличивающейся производительностью". При изменении с уровня вычислений "Общего назначения" или "Оптимизированный для операций в памяти" на уровень "С увеличивающейся производительностью", функциональность PgBouncer теряется.