pgbouncer 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
pgbouncer 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
pgbouncer 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
pgbouncer 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
pgbouncer 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 BSD
开发语言 C/C++
操作系统 Windows
软件类型 开源软件
开源组织
地区 不详
投 递 者 ValueError
适用人群 未知
收录时间 2010-12-16

软件简介

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 里添加那部分支持。

展开阅读全文

评论 (1)

加载中
PostgreSQL 而不用连接池,绝对是坑爹的做法…… 哪怕是像 pgbouncer 这样的“轻量级”连接池,有和没有的区别都不是一般的大。
2011/06/24 21:22
回复
举报
更多评论
发表于服务端专区
2020/06/12 07:48

PgBouncer 1.14.0 发布,PostgreSQL 数据库连接池

PgBouncer 1.14.0 发布了,pgbouncer 是 PostgreSQL 的轻量级连接池,支持会话连接池、事务连接池和语句连接池三种模式。 在新版本中,可以将 PgBouncer 中的已加密 SCRAM 机密用于服务器端登录,因此,不再需要在 PgBouncer 中存储纯文本密码才能使用 SCRAM。systemd 集成也已得到增强,以支持套接字激活。此外,PgBouncer 现在支持 Windows 上的 Unix 域套接字,与 PostgreSQL 13 的新功能匹配。 新特性 添加 SCRAM 身份验证传...

0
3
发表于服务端专区
2020/04/29 07:28

PgBouncer 1.13.0 发布,PostgreSQL 数据库连接池

PgBouncer 1.13.0 发布了,pgbouncer 是 PostgreSQL 的轻量级连接池,支持会话连接池、事务连接池和语句连接池三种模式。 新版本更新内容主要有: 特性 添加配置设置 tcp_user_timeout,以设置相应的套接字选项 现在,client_tls_protocols 和 server_tls_protocols 默认为安全,这意味着仅启用 TLS 1.2 和 TLS 1.3。较旧的版本也仍受支持,只是未默认打开 添加对 systemd 服务通知的支持。现在,这允许使用 Type=notify 服务单...

0
5
发表于AI & 大数据专区
2019/10/20 07:13

PgBouncer 1.12.0 发布,PostgreSQL 数据库连接池

PgBouncer 1.12.0 发布了,pgbouncer 是 PostgreSQL 的轻量级连接池,支持会话连接池、事务连接池和语句连接池三种模式。 新版本包含对 PgBouncer 1.11.0 中新的 SCRAM 支持的一些修复,从而改善了与较新的 PostgreSQL 版本的互操作性,因此,特别建议 SCRAM 用户进行升级。更新内容如下: 特性 添加一个设置以打开 SO_REUSEPORT 套接字选项。在某些操作系统上,这允许在侦听同一端口的同一主机上运行多个 PgBouncer 实例,并使...

0
12
发表于服务端专区
2019/08/29 07:01

PgBouncer 1.11.0 发布,PostgreSQL 数据库连接池

PgBouncer 1.11.0 已发布,pgbouncer 是 PostgreSQL 的轻量级连接池,支持会话连接池、事务连接池和语句连接池三种模式。 新版本最主要的新功能是支持 SCRAM 身份验证。此版本还增加了对 PostgreSQL 12(GSSENCRequest)中引入的新启动数据包类型的支持,因此建议使用此版本以便更好地体验 PostgreSQL 12 及更高版本。更新内容如下: 特性 添加对客户端和服务器的 SCRAM 身份验证的支持,添加了新的身份验证类型 scram-sha-256 ...

0
8
发表于服务端专区
2019/07/04 07:16

PgBouncer 1.10.0 发布,PostgreSQL 数据库连接池

PgBouncer 1.10.0 已发布,pgbouncer 是 PostgreSQL 的轻量级连接池,支持会话连接池、事务连接池和语句连接池三种模式。 新版本最主要的变化是改进了对 TLS 1.3 的支持,更新内容如下: 特性 添加对启用和禁用 TLS 1.3 的支持 修复 修复 TLS 1.3 支持 修复 SHOW FDS 中的罕见崩溃 (#311) 修复了许多取消请求到达时可能导致停机时间延长的问题 (#329) 在 postgres 重新加载后避免“登录查询的意外响应” (#220) 修复 idle_trans...

0
5
发表于开发技能专区
2018/08/14 07:33

PostgreSQL 数据库连接池 PgBouncer 1.9.0 发布

PgBouncer 1.9.0 已发布,更新内容如下: Features RECONNECT command WAIT_CLOSE command Fast close - Disconnect a server in session pool mode immediately if it is in “close_needed” (reconnect) mode. Add close_needed column to SHOW SERVERS Fixes Avoid double-free in parse_filename Avoid NULL pointer deref in parse_line Cleanups Port mkauth.py to Python 3 Improve signals documentation Improve qui...

1
2
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表于软件架构专区
2020/04/13 06:00

PgBouncer 原理与深入

PGBOUNCER 有些问题是需要更深入的理解的,尤其针对于postgresql 来说为什么要推荐使用 连接池,而MYSQL 为什么没有听说过墙裂推荐使用连接池,以及具体怎么操作pgbouncer 都是这次要说的话题。 在使用PostgreSQL 时连接时通过postmaster 来接受外部对postgresql的连接。而这样的方式会造成每个连接都会初始分配不小的内存,而这样的做法遇到大量的高频率的连接,会占用大量的内存,导致系统性能的问题,通用的解决方法当然可以...

0
0
2015/11/23 11:39

由 git 编译 PgBouncer

1、安装编译过程中依赖的包: sudo yum install libtool libevent-devel 这个过程顺便自动安装依赖包 autoconf 和 automake,视OS情况而定 2、克隆代码: git clone git://git.postgresql.org/git/pgbouncer.git pgbouncer cd pgbouncer 3、编译: git submodule update --init --recursive ./autogen.sh ./configure prefix=/home/quanzl/pgsql/fxb make make install 4、配置: 刚刚发现了我同事写的博文《Pos...

0
0
2015/12/08 16:12

PgBouncer简单测试

测试环境,笔记本 4核8线程 16G内存,PostgreSQL v9.4.5取自EDB 默认参数测试(shared_buffer 128M) 1、初始化 ./pgbench -i -s 1000 postgres 开始时没有计时,整个过程大约10分钟左右,执行完毕之后data目录有15.8G 2、测试PostgreSQL 我们启用64个会话8线程,每个会话完成6个事务后退出 [quanzl@bogon bin]$ ./pgbench -j 8 -c 64 -t 6 postgres -p 5432 starting vacuum...end. transaction type: TPC-B...

2
2
发表了博客
01/19 15:00

为什么你的pgbouncer连接这么慢

在PostgreSQL中;说得连接池,立马想到pgbouncer。pgbouncer 的目标是降低因为新建到 PostgreSQL/Greenplum 的连接而导致的性能损失。 在项目中;DBA会劝开发人员使用连接池。这样可以控制连接数。也避免反复建立连接带来的性能消耗。对连接池的优点。这篇文章讲解比较好。 但是在开发人员在使用连接池的过程中,一般开发人员那边也有自己的jdbc的连接池。在启动项目的过程;于是出现下面这段对话 开发人员:这项目启动好慢;原...

0
0
发表了博客
2018/01/07 15:00

pgbouncer 源码编译安装

pgbouncer 是一个轻量级的postgresql 数据库连接池,也可以用来做greenplum 数据库的前端连接池。 今天试了一下下载源码进行编译安装,过程记录一下: 1. pgbouncer 依赖的组件: GNU Make 3.81+ libevent 2.0 (optional) OpenSSL 1.0.1 for TLS support. (optional) c-ares as alternative to libevent’s evdns. 2.通过yum 安装相关组件: yum install openssl yum install openssl-devel yum install libevent-devel yum ins...

0
0
2014/07/07 16:36

从git源代码库安装pgBouncer

必要软件包: libevent-devel libtool autoconf automake 1、克隆源代码 git clone git://git.postgresql.org/git/pgbouncer.git 2、初始化子模块 cd pgbouncer git submodule init git submodule update 这里查看配置文件可知,是这个项目: git://github.com/markokr/libusual.git 3、运行如下命令 $ ./autogen.sh $ ./configure $ make $ sudo make install...

0
0
发表了博客
2013/06/05 18:40

Pgbouncer unix socket is in use, cannot continue

同事搭了一个postgresql + pgbouncer的环境,但是不小心删了一些文件,重装了pgbouncer后再启动就起不来了,反复试了几次也不行,一直报错: unix socket is in use, cannot continue 2013-06-03 20:05:24.343 13420 LOG File descriptor limit: 1024 (H:1024), max_client_conn: 1500, max fds possible: 1710 2013-06-03 20:05:24.360 13420 FATAL @src/main.c:754 in function main(): unix socket is in use, cannot con...

3
0
发表于数据库专区
2016/01/25 21:24

postgresql-xl使用pgbouncer连接池

概述 pgbouncer是PostgreSQL的一个轻量级连接池,可以给客户端提供一个统一的视图。 pgbouncer的作用: a)pgbouncer可以在后端数据库和前端应用间简历连接的桥梁,由pgbouncer去处理和后端的连接关系。 b)对客户端的连接进行限制,防止过多的恶意连接。 pgbouncer的特点: a)内存消耗低。(默认2k/连接) b)可以把不同的数据库连接到一个机器上,而对客户端保持透明。 c)支持在线的重行配置而无需重启。 需求 postgresql-xl在架构...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了问答
2011/12/07 16:41

Instagram 架构分析笔记

by Fenng@dbanotes.net Instagram 团队上个月才迎来第 7 名员工,是的,7个人的团队。用户数量超过 1400 万,图片数量:1.5 亿。不得不说,这真他妈是个业界奇迹。 几天前,Instagram 发布了一篇文章:What Powers Instagram: Hundreds of Instances, Dozens of Technologies,披露了 Instagram 架构的一些信息,足够勾起大多数人的好奇心。读罢做点笔记,各种线索还是有一定参考价值的。能打开原文的建议直接读原文。 Instagra...

13
72
发表了问答
2013/06/14 16:17

pgbouncer javaweb jndi 连接发生异常prepared statement "S_1" does not exist

如题: 环境: postgresql 9.1 pgbouncer 1.5 postgresql 的java 驱动为 postgresql9.2-1002.jdb4.jar pgbouncer 的pool_mode 为Transaction ,设置 server_reset_query为空 代码中用了 spring的 jdbcTemplate,里面包含 prepared statement语句。 google上资料也很少,不过有提到这个时候不支持postgresql 的prepared statement。 不知道有谁知道怎么解决的? pgbouncer 的配置安装 请看这里...

7
0
发表了问答
2010/12/16 14:59

这个pgbouncer写错了哈

这个pgbouncer写错了哈 软件貌似是C/C++开发的不是Java 另外也不是跨平台的,理论上只能Linux,Win下要借助Mingw,性能还不如ODBC连接池。 不过Linux下真的超给力的说。。。

3
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
1 评论
35 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部