Управление соединениями в PostgreSQL происходит с помощью менеджера подключений, который размещается перед кластером СУБД. yandex.cloud Он позволяет подключиться к базе данных большому числу клиентов без деградации производительности. yandex.cloud
Менеджер подключений поддерживает три режима управления соединениями: yandex.cloud
- Сессионный (по умолчанию). yandex.cloud Клиентское соединение устанавливается при первом запросе к базе данных и поддерживается до тех пор, пока клиент не разорвёт сессию. yandex.cloud Затем это соединение может быть использовано другим или этим же клиентом. yandex.cloud
- Транзакционный. yandex.cloud Клиентское соединение устанавливается при первом запросе к базе данных и поддерживается до завершения транзакции. yandex.cloud Затем это соединение может быть использовано другим или этим же клиентом. yandex.cloud
- Режим запроса. yandex.cloud Клиентское соединение поддерживается только при выполнении запроса к базе данных. yandex.cloud Затем это соединение может быть использовано другим или этим же клиентом. yandex.cloud За раз выполняется только один запрос. yandex.cloud
Для прекращения работы сервера PostgreSQL позволяет контролировать тип завершения работы, отправляя различные сигналы процессу postgres: www.postgresql.org
- SIGTERM — режим интеллектуального завершения работы. www.postgresql.org После получения SIGTERM сервер запрещает новые подключения, но позволяет существующим сеансам завершить свою работу в обычном режиме. www.postgresql.org Он завершает работу только после завершения всех сеансов. www.postgresql.org
- SIGINT — режим быстрого завершения работы. www.postgresql.org Сервер запрещает новые подключения и отправляет всем существующим серверным процессам SIGTERM, что приведёт к тому, что они прервут свои текущие транзакции и быстро завершат работу. www.postgresql.org Затем он ожидает завершения всех серверных процессов и, наконец, завершает работу. www.postgresql.org
- SIGQUIT — режим немедленного завершения работы. www.postgresql.org Сервер отправит SIGQUIT всем дочерним процессам и будет ждать их завершения. www.postgresql.org Если какой-либо из них не завершится в течение 5 секунд, им будет отправлен SIGKILL. www.postgresql.org Процесс сервера-супервизора завершается, как только завершаются все дочерние процессы, без выполнения обычной обработки завершения работы базы данных. www.postgresql.org