我想使用带缓存CREATE SEQUENCE serial CACHE 100
的postgres序列。
目标是同时提高约500个连接/应用程序线程的SELECT nextval('serial');
每秒3000次使用的性能。
问题在于我正在进行密集的自动缩放,并且每次连接断开时,连接都会断开连接并重新连接,在序列中留下未使用的“漏洞”。
好消息,好消息可能是我在事务池模式下使用PgBouncer heroku buildpack。
我的问题是:事务池模式是否会解决我所描述的“漏洞”问题,它是否会以下一个应用程序连接从池中获取此会话并继续使用序列缓存的方式重用会话?
答案 0 :(得分:2)
这取决于server_reset_query
的设置。如果将其设置为DISCARD ALL
,则在将连接的服务器分发给客户端之前,将丢弃序列高速缓存。但是对于事务池,建议的server_reset_query
为空,因此在这种情况下您将能够重用序列缓存。您也可以根据需要使用不同的DISCARD
命令。