PgBouncer 会重用 postgresql 会话序列缓存吗?

Will PgBouncer reuse postgresql session sequence cache?

我想使用带缓存的 postgres 序列 CREATE SEQUENCE serial CACHE 100。 目标是通过 ~500 connection/application 个线程同时提高 SELECT nextval('serial'); 每秒 3000 次使用的性能。

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

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

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

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