Режимы PgBouncer
Вопрос
После перевода PgBouncer в режим transaction у приложения начались странные ошибки с SET search_path и advisory-блокировками. Почему?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
- Соединение с сервером даётся клиенту лишь на транзакцию, сессионное состояние теряетсяправильный ответ
- PgBouncer в режиме transaction блокирует SET и advisory-функции на уровне протокола
- Режим transaction отключает индексы и планировщик для запросов, идущих через пул
- Это ошибка версии PostgreSQL, которую исправляет обновление минорного релиза
Разбор
В transaction-режиме следующая транзакция клиента может пойти по другому серверному соединению. Всё, что живёт дольше транзакции (SET без LOCAL, сессионные advisory-блокировки, LISTEN, временные таблицы), ломается. Лечится SET LOCAL, транзакционными блокировками или режимом session для таких клиентов. Запросы и индексы работают нормально.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Восстановление PostgreSQL на момент времени
Следующий вопрос
Восстановление на момент времени