千家信息网

PostgreSQL与Pgbouncer对比使用

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容介绍了"PostgreSQL与Pgbouncer对比使用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够
千家信息网最后更新 2026年11月03日PostgreSQL与Pgbouncer对比使用

本篇内容介绍了"PostgreSQL与Pgbouncer对比使用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

数据库的连接池,众所周知没有不需要的,所以对于数据库的连接池给出答案,一定是需要的。

在给出答案的同时,如果有人问你为什么要连接池,到底连接池起到什么作用,Postgresql 到底那个连接池用的不错? 如果你一时回答不了这些问题,follow me .

首先我们假设,如果我们的数据库没有连接池会怎么样?

数据库在没有任何连接池的情况下,应用程序必须直接访问数据库来建立连接。当然我们可能认为这是连接到数据库快速的方法,可是到底是这样的吗?你在打开一个和数据库直接的连接,说明本身数据库没有给你开启一个连接,而如此的情况下打开的一个连接的消耗,关闭一个连接的消耗,或者你使用加密的连接,还要有其他相关的消耗,而这样的消耗,伴随着你打开的连接越多,则消耗的就越多。尤其是互联网上的一些短连接,可能同时并发的连接多,但占用这个连接的时间很短。这就会引起另一个问题,你设置的连接数和突入起来的连接数不匹配的情况,最后就会造成拒绝连接的问题。

所以这就对数据库的连接提出一个问题,复用,连接的复用对数据库非常重要,这可以降低某些快速连接,快速断开的连接的数据库访问对数据库性能的消耗和产生的一些不必要的麻烦。

说到这里如果你是 developer 估计很快会对我下面的东西失去兴趣,因为你会说,我有连接池,每个程序的框架都有连接池,我不需要你的连接池。

really ? 你们的那些叫 Framework pooling 我今天说的是Persistent 连接与standlone 连接池。

为什么我会提出这个问题,因为一个数据库不可能仅仅接受你一个程序的连接,而一个程序必然应该有自己的连接池,但一个数据库可不仅仅为你一个应用的程序服务,所以当数据库接受多个从程序来的连接,本身对数据库的保护在哪里?

PG 在接受连接的时候,会分配出一些内存已应对连接带来的一些数据的使用的针对这个连接的内存消耗,其实别的数据库也是一样。PGA SGA 这样的概念在 PG 中也是存在的。

所以过多的连接必然会消耗PGA,导致内存出现泄露,导致一些重大的数据库性能和安全的问题。

通过软件的架构的连接池对数据库进行连接(图一)

采用软件连接池的方式对数据库进行连接(图二)

目前的主要的PostgreSQL的连接池主要有PGPOOL-II 和 PgBouncer

两种,PgBouncer. 与 PGPOOL 对比 PgBouncer 的名气要小很多,其实他的功能对比 PGPOOL 也是要精简的,那为什么推荐 PgBouncer 而不是PGPOOL,主要是PgBouncer 在连接池方面做的不比PGPOOL-II 要差,并且安装配置管理都要更为简单,配合 Repmgr 可以进行 PostgreSQL 超级高可用模式,这算是PostgreSQL 的一种高可用的解决方案。

安装是很简单的

$ ./configure --prefix=/usr/local --with-libevent=libevent-prefix
$ make
$ make install

废话不说我们先开始配置先使用起来

我们配置几点 1 2 3

1 建立一个连接当前数据库的账户

2 配置配置文件

3 配置账户文件

PgBouncer 有一个配置文件 pgbouncer.ini 还有一个用户账户文件 userlist.txt

配置的ini 文件有两块,一块是database 一块是 pgbouncer database 是配置一个连接实际数据库的认证,另一个是配置pgbouncer 监听的信息以及一些基本的配置

[databases]

test_database = host=192.168.198.123 port=5432 dbname=postgre user=admin password='password'

[pgbouncer]

listen_port = 1818

listen_addr = 192.168.198.123

auth_type = md5

auth_file = /usr/local/pgbouncer/share/doc/pgbouncer/userlist.txt

logfile = /usr/local/pgbouncer/pgbouncer.log

pidfile = /usr/local/pgbouncer/pgbouncer.pid

admin_users = admin

pool_mode = Transaction

然后我们在userlist.txt 文件中将用以连接服务器的账户和密码填入

Ok我们可以通过pgbouncer 来连接到 PG

上面启动pgbouncer

然后我们尝试,登录到数据库中

psql -h 192.168.198.123 -p 1818 -U admin test_database

在登录后,我们可以查看pgbouncer 本身的数据库,里面有一些命令是pgbouncer 独有的。

通过一些命令我们可以了解到服务器的一些配置情况

而最终的问题是,使用PGBOUNCER 到底有什么好处

1 pg现在有5个连接通过PG 连入 实体服务器

2 实体服务器现在抛出系统的连接,以及本地的连接,真正外部的连接只有4个

这说明数据库接受的连接和实际连接数据库的客户端是有出入的,实际连接的客户端的数据量要大于数据库体现的连接数据库的量,说明Pgbouncer起到了连接池的作用。

"PostgreSQL与Pgbouncer对比使用"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

数据 数据库 配置 消耗 问题 文件 程序 情况 服务 实际 服务器 账户 内存 作用 内容 同时 命令 实体 客户 必然 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技行业发展 互联网金融公司科技 紫鲸互联网科技 多迪互联网科技有限公司 山东吉时兔互联网科技有限公司 阿里巴巴算科技企业还是互联网 成都互联网科技公司100强 千方科技属于互联网企业吗 互联网科技扶贫时间 996高科技互联网公司 佛山市翊博互联网络科技有限公司 深圳市罗太互联网科技有限公司 元气玛特互联网科技公司是外包吗 互联网金融科技元年 江苏苏星互联网科技有限公司 互联网科技融合创新 济南小医互联网科技有限公司招聘 互联网科技手抄报图片 陕西彩京云互联网科技有限公司 华人运通互联网科技公司 百单网互联网科技有限公司怎么样 新华互联网科技学院 互联网科技垄断 互联网科技创新服务 赶超互联网科技 微信多开 2021互联网科技公司排名 福州德业互联网科技 中国新注册互联网科技 互联网的黑科技实验室 利用互联网等科技手段
0