PostgreSQL 連接池:pgbouncer

jopen 12年前發布 | 41K 次閱讀 數據庫連接池 PostgreSQL

pgbouncer 是 PostgreSQL 的輕量的連接池,支持三種模式。

Session pooling/會話連接池
最禮貌的方法。在客戶端連接的時候,在它的連接生命期內,會給它賦予一個服務器連接。在客戶端斷開的時候,服務器連接會放回到連接池中。
Transaction pooling/事務連接池
服務器連接只有在一個事務里的時候才賦予客戶端。在 PgBouncer 注意到事務結束的時候,服務器將會放回連接池中。這是一個 hack,因為它打破了應用對后段連接的看法。只有在應用配合這樣的使用模式,沒有使用會破壞這種使用模式的時候才能用這個連接方式。參閱下標獲取會破壞 這種模式的特性。
Statement pooling/語句連接池
最激進的模式。這是事務連接池的一個扭曲的變種 - 不允許多語句的事務。這就意味著是在客戶端強制“autocomit”模式,主要是給 PL/Proxy 用的。
  • 內存需求低(缺省的時候每個連接 2k)。這事因為 PgBouncer 不需要一次就看到完整的包。
  • 它不是和單個后端服務器綁定的,目標數據庫可以位于不同的主機上。
  • 對大多數設置,都支持在線的重新配置,無需重啟。
  • 支持在線的重啟/升級,而不會退出客戶端的連接。
  • 只支持協議 V3 版本,因此后段版本必須 >= 7.4。
特性     會話連接池   事務連接池  
啟動參數 支持 [0] 支持 [0]
SET/RESET 支持 從不支持
LISTEN/NOTIFY 支持 從不支持
WITHOUT HOLD CURSOR 支持 支持
WITH HOLD CURSOR 支持 [1] 從不支持
協議級別的準備好的規劃 支持 [1] 不支持 [2]
PREPARE / DEALLOCATE 支持 [1] 從不支持
ON COMMIT DROP 臨時表 支持 支持
PRESERVE/DELETE ROWS 臨時表 支持 [1] 從不支持
重置緩存的規劃 支持 [1] 支持 [1]
LOAD 語句 支持 從不支持
  • [0] - 啟動參數是: client_encoding,datestyle,timezone 和 standard_conforming_strings。PgBouncer 會判斷這些參數的變化并且它能保證對客戶端來說是一致的。從 PgBouncer 1.1 開始可用。
  • [1] - 完全透明要求 PostgreSQL 8.3 和 PgBouncer 1.1,并且還要設置 server_reset_query = DISCARD ALL
  • [2] - 我們可以在 PgBouncer 里添加那部分支持。

項目主頁:http://www.baiduhome.net/lib/view/home/1350474752446

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!