PgBouncer会重用PostgreSQL的会话序列缓存吗?

4
我想使用缓存的postgres序列CREATE SEQUENCE serial CACHE 100。目标是通过大约500个连接/应用程序线程并发来提高每秒3000次使用SELECT nextval('serial');的性能。
问题在于我正在进行密集的自动扩展,偶尔会断开连接并重新连接,每次连接断开时序列中将留下未使用的ID“空洞”。
好消息可能是我正在使用PgBouncer heroku buildpack以事务池模式运行。
我的问题是:事务池模式是否会解决我所描述的“空洞”问题?它是否会以一种重复使用会话的方式重新使用会话,在下一个应用程序连接将从池中获取此会话并继续使用序列的缓存?
1个回答

2
这取决于server_reset_query的设置。如果你将其设置为DISCARD ALL,那么在向客户端分配连接之前,序列缓存将被丢弃。但对于事务池,推荐使用空的server_reset_query,这样你就可以在该情况下重用序列缓存。根据需要,也可以使用不同的DISCARD命令。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接