pgbouncer PostgreSQL 连接池

我要开发同款
匿名用户2010年12月16日
53阅读
开发技术C/C++
所属分类程序开发、数据库连接池
授权协议BSD

作品详情

pgbouncer是PostgreSQL的轻量的连接池,支持三种模式。

Sessionpooling/会话连接池

最礼貌的方法。在客户端连接的时候,在它的连接生命期内,会给它赋予一个服务器连接。在客户端断开的时候,服务器连接会放回到连接池中。

Transactionpooling/事务连接池

服务器连接只有在一个事务里的时候才赋予客户端。在PgBouncer注意到事务结束的时候,服务器将会放回连接池中。这是一个hack,因为它打破了应用对后段连接的看法。只有在应用配合这样的使用模式,没有使用会破坏这种使用模式的时候才能用这个连接方式。参阅下标获取会破坏这种模式的特性。

Statementpooling/语句连接池

最激进的模式。这是事务连接池的一个扭曲的变种-不允许多语句的事务。这就意味着是在客户端强制“autocomit”模式,主要是给PL/Proxy用的。

内存需求低(缺省的时候每个连接2k)。这事因为PgBouncer不需要一次就看到完整的包。

它不是和单个后端服务器绑定的,目标数据库可以位于不同的主机上。

对大多数设置,都支持在线的重新配置,无需重启。

支持在线的重启/升级,而不会退出客户端的连接。

只支持协议V3版本,因此后段版本必须>=7.4。

特性  会话连接池 事务连接池 启动参数支持[0]支持[0]SET/RESET支持从不支持LISTEN/NOTIFY支持从不支持WITHOUTHOLDCURSOR支持支持WITHHOLDCURSOR支持[1]从不支持协议级别的准备好的规划支持[1]不支持[2]PREPARE/DEALLOCATE支持[1]从不支持ONCOMMITDROP临时表支持支持PRESERVE/DELETEROWS临时表支持[1]从不支持重置缓存的规划支持[1]支持[1]LOAD语句支持从不支持

[0]-启动参数是:client_encoding,datestyle,timezone和standard_conforming_strings。PgBouncer会判断这些参数的变化并且它能保证对客户端来说是一致的。从PgBouncer1.1开始可用。

[1]-完全透明要求PostgreSQL8.3和PgBouncer1.1,并且还要设置server_reset_query=DISCARDALL

[2]-我们可以在PgBouncer里添加那部分支持。

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论