pgbouncer如何关心事务池模式中的会话参数

时间:2018-01-11 09:54:58

标签: postgresql pgbouncer

我通过 pgbouncer 连接到Postgresql,并启用了事务池模式。据我所知,在这种模式下,pgbouncer可以在不中断会话的情况下为多个客户端共享相同的连接。因此,几个客户端可以在一个会话中顺序地工作,一个接一个。问题是,当pgbouncer从连接中分离出一个客户端并将另一个客户端连接到此连接时,是否关心重置会话参数?

特别是,我的应用程序获得连接,然后发出类似这样的内容:

executeQuery(connection,"select set_config('myapp.user','fonar101',false)");
..../*other actions*/
commit(connection); 

提交后,pgbouncer可以将我的应用程序与连接分离并将其恢复到其池中,对吧?所以,

  1. 如果我在提交后发出另一个声明,他们可能会 在具有不正确的会话值的另一个会话中执行 参数
  2. pgbouncer可以将另一个客户端连接到该连接 并且该客户端将再次进行错误的会话设置
  3. pgbouncer如何关心这件事?

2 个答案:

答案 0 :(得分:1)

我说的恰恰相反:

https://pgbouncer.github.io/config.html

  

<强>交易

     

事务完成后,服务器将被释放回池中。

这意味着当您SET SESSION(SET的默认值)而未指定SET LOCAL时,您更改了在池中共享会话的所有事务的设置...

答案 1 :(得分:0)

根据pgbouncer文档,事务池模式中的临时表为doesnt support SET / RESET和ON COMMIT DROP。