3

我想将 postgres 序列与 cache 一起使用CREATE SEQUENCE serial CACHE 100SELECT nextval('serial');目标是通过约 500 个连接/应用程序线程同时提高每秒 3000 次使用的性能。

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

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

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

4

1 回答 1

2

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

于 2016-11-08T23:38:03.147 回答