pgbouncer是一个轻量级postgres连接池,可以使postgres支持高并发的应用场景。在高并发应用场景下减少资源申请和释放开销,能更快的响应客户端请求。
安装pgbouncer,安装有两种方法,一种是二进制直接安装,这样就在网上找对到对应平台的指定版本。第二种是源码编译安装,下载指定版本的源码,然后configure,如果缺少哪些包可以安装(可能会缺少libevent和openssl),然后make ;make install。
pgbouncer在启动之前需要进行配置,主要配置有下边这些:
1.数据库连接串
2.pgbouncer认证方式(any,trust,plain,md5,cert,hba,pam)和用户,密码列表在userlist.txt里配置
3.转发方式:1 session.2,transaction.3sqlstatement三种方式。第一种是以会话为单位方式进行转发,第二种是以事务为单位进行转发,第三种是以sql语句为单位进行转发,这个是autocommit;每次转发完成后都会释放连接。
- 以seesion方式:如果应用是以长连接会有多连接并行的限制。要计算好有多少长连接。
- 以transaction方式:最好在应用的代码里做成显示事务,不然会出现事务被分到多个连接里执行的情况 。
- 以SQL方式 ,基本上对于软解析这样提高数据库性能的特性就支持不了了。(包话transaction)
4.默认连接数和最大连接数,默认连接数是指在pgbouncer启动后pgbouncer和数据库之间建立的连接数。最大连接数是指在请求增加到超过默认连接数后,可以创建的最大连接总数据。
默认的配置文件在源码下的etc目录中
原理:
pgbouncer是在应用和数据库的中间层增加一个请求接收、请求转发、与数据库建立一些长连接。从而解决多应用与数据库频繁以会话方式直连,减少数据库频繁申请和释放资源的消耗。