Skip to content

Latest commit

 

History

History
68 lines (50 loc) · 3.26 KB

features.md

File metadata and controls

68 lines (50 loc) · 3.26 KB
layout title
default
PgBouncer features

特性

  •   支持几种不同的连接模式:

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

    Transaction pooling/事务连接池 : 仅在事务期间将服务器连接分配给客户端。当PgBouncer注意到该事务结束时, 服务器将被放回到池中。它打破了应用程序对后端连接的期望。 只有在应用配合这样的使用模式,没有使用会破坏这种使用模式的时候才能用这个连接方式。 参阅下表获取会破坏这种模式的特性。

    Statement pooling/语句连接池 : 最积极的方法。这是一个事务池的一个扭曲的变种——不允许多语句事务。 这意味着在客户端上强制 "autocommit" 模式,主要针对PL/Proxy。

  • 内存需求低(默认是每个连接2K)。这是因为PgBouncer不需要一次性查看所有包。

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

  • 支持在线重新配置大部分设置。

  • 支持在线重启/升级,而不用删除客户端连接。

  • 仅支持协议V3,所以后端版本必须 >= 7.4。

池模式的SQL特性映射

下面的表列出了各种PostgreSQL特性和它们是否能与PgBouncer池模式一起共用。 请注意, '事务' 池打破了客户端对服务器的期望, 只有在应用程序不使用非工作功能的情况下才能使用。

|----------------------------------+-----------------+---------------------| | 特性 | 会话池 | 事务池 | |----------------------------------+-----------------+---------------------| | 启动参数 | 支持 1 | 支持 1 | | SET/RESET | 支持 | 从不支持 | | LISTEN/NOTIFY | 支持 | 从不支持 | | WITHOUT HOLD CURSOR | 支持 | 支持 | | WITH HOLD CURSOR | 支持 2 | 从不支持 | | 协议级准备计划 | 支持 2 | 不支持 3 | | PREPARE / DEALLOCATE | 支持 2 | 从不支持 | | ON COMMIT DROP temp tables | 支持 | 支持 | | PRESERVE/DELETE ROWS temp tables | 支持 2 | 从不支持 | | 重置缓存的计划 | 支持 2 | 支持 2 | | LOAD 语句 | 支持 | 从不支持 | |----------------------------------+-----------------+---------------------|

Footnotes

  1. 启动参数是: client_encoding, datestyle, timezonestandard_conforming_strings. PgBouncer 可以检测到它们的改动, 所以它可以保证这些参数对客户端保持一致。自PgBouncer 1.1开始可用。 2

  2. 完全透明要求 PostgreSQL 8.3 和 PgBouncer 1.1 并设置 server_reset_query = DISCARD ALL. 2 3 4 5 6

  3. 有望在PgBouncer中添加对它的支持。