Будет ли PgBouncer повторно использовать кэш последовательности сеансов postgresql?

Я хочу использовать последовательность postgres с кешем CREATE SEQUENCE serial CACHE 100. Цель состоит в том, чтобы повысить производительность 3000 использований SELECT nextval('serial'); в секунду примерно на 500 потоков соединений/приложений одновременно.

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

Что ж, хорошей новостью может быть то, что я использую PgBouncer heroku buildpack с режимом пула транзакций.

Мой вопрос: решит ли режим пула транзакций описанные мной проблемы с «дырами», будет ли он повторно использовать сеанс таким образом, чтобы следующее подключение приложения взяло этот сеанс из пула и продолжило использовать кеш последовательности?


person naviram    schedule 29.10.2016    source источник


Ответы (1)


Это зависит от настройки server_reset_query. Если у вас установлено значение DISCARD ALL, то кэши последовательности отбрасываются до того, как подключенный сервер будет передан клиенту. Но для пула транзакций рекомендуемый server_reset_query пуст, поэтому в этом случае вы сможете повторно использовать кэши последовательностей. Вы также можете использовать другую команду DISCARD, в зависимости от ваших потребностей.

person Peter Eisentraut    schedule 08.11.2016