Каковы преимущества использования пула транзакций с помощью pgbouncer?

У меня возникли проблемы с поиском хорошего резюме преимуществ/недостатков использования pgbouncer для пула транзакций и объединения сеансов.

Означает ли это, что тяжелая рабочая нагрузка транзакции как-то лучше сбалансирована? Не следует ли устанавливать столько соединений, сколько требуется для подключения от pgbouncer к базе данных?

Ответы

Ответ 1

Объединение уровня транзакций поможет, если у вас есть приложения, в которых проводятся сеансы бездействия. PgBouncer не требует, чтобы сеансы были открыты и простаивали, он просто захватывает один, когда начинается новая транзакция. Эти незадействованные сеансы стоят только вам подключения pgbouncer, а не реального сеанса Pg бездействия, когда бэкэнд сидит вокруг, теряя память и накладные расходы на синхронизацию, ничего не делая.

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