PostgreSQL 連接池:pgbouncer
pgbouncer 是 PostgreSQL 的輕量的連接池,支持三種模式。
- Session pooling/會話連接池
- 最禮貌的方法。在客戶端連接的時候,在它的連接生命期內,會給它賦予一個服務器連接。在客戶端斷開的時候,服務器連接會放回到連接池中。
- Transaction pooling/事務連接池
- 服務器連接只有在一個事務里的時候才賦予客戶端。在 PgBouncer 注意到事務結束的時候,服務器將會放回連接池中。這是一個 hack,因為它打破了應用對后段連接的看法。只有在應用配合這樣的使用模式,沒有使用會破壞這種使用模式的時候才能用這個連接方式。參閱下標獲取會破壞 這種模式的特性。
- Statement pooling/語句連接池
- 最激進的模式。這是事務連接池的一個扭曲的變種 - 不允許多語句的事務。這就意味著是在客戶端強制“autocomit”模式,主要是給 PL/Proxy 用的。
- 內存需求低(缺省的時候每個連接 2k)。這事因為 PgBouncer 不需要一次就看到完整的包。
- 它不是和單個后端服務器綁定的,目標數據庫可以位于不同的主機上。
- 對大多數設置,都支持在線的重新配置,無需重啟。
- 支持在線的重啟/升級,而不會退出客戶端的連接。
- 只支持協議 V3 版本,因此后段版本必須 >= 7.4。
- [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 里添加那部分支持。
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!