我想使用带缓存的 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/