postgresql - PgBouncer 会重用 postgresql session 序列缓存吗?

标签 postgresql pgbouncer

我想使用带缓存的 postgres 序列 CREATE SEQUENCE serial CACHE 100。 目标是将 SELECT nextval('serial'); 每秒 3000 次使用的性能提高约 500 个连接/应用程序线程并发。

问题是我正在进行密集的自动缩放,并且连接将断开连接并偶尔重新连接,每次断开连接时都会在序列中留下未使用的 ID 的“漏洞”。

好吧,好消息可能是我正在使用 PgBouncer heroku buildpack具有交易池模式。

我的问题是:事务池模式是否会解决我描述的“漏洞”问题,它是否会以下一个应用程序连接将从池中获取此 session 并继续使用序列缓存的方式重用 session ?

最佳答案

这取决于server_reset_query的设置。如果您将其设置为 DISCARD ALL,则在将连接的服务器分发给客户端之前丢弃序列缓存。但是对于事务池,推荐的 server_reset_query 是空的,因此在这种情况下您将能够重用序列缓存。您还可以根据需要使用不同的 DISCARD 命令。

关于postgresql - PgBouncer 会重用 postgresql session 序列缓存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40315131/

相关文章:

pgadmin 通过 pgbouncer 连接到 postgresql

postgresql - 连接 pgbouncer 和使用 docker 运行的 postgres

python - psycopg2 + pgbouncer。带有 gevent 错误的异步模式

mysql - 更新表中的列以等于同一表中的另一列 WHERE NOT 语法

postgresql - pgbouncer 端口与 db 端口

sql - 使用一对一的键快速合并表

python - 如何在多个条件下更新值

node.js - Sequelize 池是否需要服务器端池才能工作?

ruby-on-rails - PG::UndefinedObject: 错误:类型 "hstore"不存在但确实存在

sql - Knex on constraint upsert 冲突