pgbouncer是 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 里添加那部分支持。
更多項目動態可去項目源地址查看