Pgbouncer 介绍

PostgreSQL 的轻量的连接池。

特性

  • 在轮转连接的时候有好几种方式:
Session pooling/会话连接池

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

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

最激进的模式。这是事务连接池的一个扭曲的变种 - 不允许多语句的事务。这就意味着是在客户端强制“autocomit”模式,主要是给 PL/Proxy 用的。
  • 内存需求低(缺省的时候每个连接 2k)。这事因为 PgBouncer 不需要一次就看到完整的包。
  • 它不是和单个后端服务器绑定的,目标数据库可以位于不同的主机上。
  • 对大多数设置,都支持在线的重新配置,无需重启。
  • 支持在线的重启/升级,而不会退出客户端的连接。
  • 只支持协议 V3 版本,因此后段版本必须 >= 7.4。

文档

  • Pgbouncer 用户手册
  • Pgbouncer 管理员手册

连接池模式和 SQL 特性的映射

下面的表列出了各种 PostgreSQL 特性,以及他们是否和 PgBouncer 连接池模式兼容的对应关系。请注意事务连接池打破了客户端对服务器的预期,只能在应用配合并且不使用那些会破坏该模式的特性的时候才能使用。

特性    会话连接池    事务连接池   
启动参数 支持 [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.pgsqldb.org/mwiki/index.php/Pgbouncer_%E4%BB%8B%E7%BB%8D

转载于:https://www.cnblogs.com/shuaixf/archive/2011/11/22/2259103.html

Pgbouncer 介绍相关推荐

  1. postgresql数据库连接池pgbouncer的搭建

    最近有些项目我们是采用PostgreSQL进行后端数据库,由于要对客户端的连接使用类型和连接数进行控制,因此我们采用PgBouncer来进行实施. PgBouncer相关的基本文档pgsqldb中文站 ...

  2. PostgreSQL修炼之道:从小工到专家

    数据库技术丛书 PostgreSQL修炼之道:从小工到专家 唐成著 图书在版编目(CIP)数据 PostgreSQL修炼之道:从小工到专家/唐成著. -北京:机械工业出版社,2015.4 (数据库技术 ...

  3. postgres 数据库架构介绍--1

    简介    postgres 数据库是目前最流行的开源关系型数据库之一,其具有丰富的数据类型.多版本并发控制.同步/异步流复制.嵌套事务和预写式日志等功能,广泛地应用于金融.物流.制造/电信等领域 基 ...

  4. Pgbouncer最佳实践:系列一

    作者:王志斌,曾获得中国PostgreSQL数据库管理工程师(PGCE),是PostgreSQL官方认证讲师,盘古云课堂特邀金牌讲师. PgBouncer作为PostgreSQL数据库的连接池中间件. ...

  5. 简单介绍互联网领域选择与营销方法

    在我看来,互联网领域的选择是"安家",而营销方法的不同则表现了"定家"的方式多种多样,只有选对了,"家"才得以"安定". ...

  6. 常用开源协议介绍以及开源软件规范列表

    1. 开源协议介绍 GPL: General Public License,开源项目最常用的许可证,衍生代码的分发需开源并且也要遵守此协议.该协议也有很多变种,不同变种要求会略微不同. MPL: MP ...

  7. python:Json模块dumps、loads、dump、load介绍

    20210831 https://www.cnblogs.com/bigtreei/p/10466518.html json dump dumps 区别 python:Json模块dumps.load ...

  8. pytorch学习笔记(九):PyTorch结构介绍

    PyTorch结构介绍 对PyTorch架构的粗浅理解,不能保证完全正确,但是希望可以从更高层次上对PyTorch上有个整体把握.水平有限,如有错误,欢迎指错,谢谢! 几个重要的类型 和数值相关的 T ...

  9. Python字节码介绍

    了解 Python 字节码是什么,Python 如何使用它来执行你的代码,以及知道它是如何帮到你的. 如果你曾经编写过 Python,或者只是使用过 Python,你或许经常会看到 Python 源代 ...

最新文章

  1. 40条怼人不带脏字的句子
  2. 使用C#调用外部Ping命令获取网络连接情况
  3. java字符常量括_Java常量 变量 数据类型
  4. 2019年,被高估的AI与数据科学该如何发展?
  5. pynlpir.LicenseError: Your license appears to have expired. Try running pynlpir update.
  6. RabbitMq(十) 消息过期时间TTL介绍以及代码实现
  7. 自如回应南京租客事件:未对该房源进行过装修 配置的家具符合规定
  8. PHP 显示信息到控制台console
  9. a标签的四个伪类是什么?如何排序?为什么?
  10. linux 清空文件夹_弱电工程师-了解这些Linux命令,菜鸟也能变高手!
  11. c语言工程作业,西工大c语言程序作业
  12. 嵌入式根文件系统的移植和制作详解【转】
  13. 记录一下自己简单的想法
  14. 软件设计工程——数据库设计
  15. ViewStub使用
  16. CSS——下拉框的制作(以小米商城为例)
  17. 腾讯云技术分享:MySQL AHI 实现解析
  18. linux nginx进程占用80端口杀不掉
  19. 低盈利、高现金流:紫光财报背后的半导体另类求生之路
  20. python行业中性_单因子测试(上)——因子中性化

热门文章

  1. 电脑操作系统维护10条实用建议!
  2. SQL数据库面试题以及答案!
  3. 计算机网络安全基础知识笔记
  4. 硬件:RS485基础知识笔记
  5. 用VS2017开发安卓应用
  6. 用扫地机器人楼下吵吗_扫地机器人到底好不好用?说说我两年的使用体验!
  7. 更新系统后魔兽世界无法连接至服务器,《魔兽世界:熊猫人之谜》5.0launcher更新无法连接服务器解决方法...
  8. python对象序列化或持久化的方法
  9. 慕课网高并发实战(一)-并发与高并发基本概念
  10. v-if v-else-if v-else