Pgpool-II相当于中间件,Pgpool-II与PG是解耦合的,基于这样的机制,Pgpool-II可以搭建在已经存在的任意版本的PG主从结构上,主从结构的实现与Pgpool-II无关,可以通过slony等工具或者PG自身的流复制机制实现。

一、拓扑结构

本次实验是基于PG自身的流复制。拓扑结构,如图1所示,

1.一台Master PG 主库。

2.一台Slave PG 从库。

3.Pgpool将会分别安装在主机 和 从机进行测试。

图1

二、测试

pgbench是PG自带的一款简单的PG性能测试工具,测试指标是TPS,表示每秒钟完成的事务数。测试过程如下:

1.创建测试数据。

pgbench -i -s100 -h 172.18.89.115  -p 5432 postgres

这条指令将会创建1000万条测试数据.由于我们是主从结构的流复制模式,测试数据将会写入主机,主机将会把数据备份给从机。

2.数据测试

使用pgbench启动30个客户端,进行60秒的测试。

pgpool安装在主/从机的时候执行此命令(读写测试):

pgbench -c 30 -T 60 -h 主/从机 IP -p 9999  -U postgres

单机测试(关掉pgpool,注意端口的改变):

pgbench -c 30 -T 60 -h 主/从机 IP -p 5432  -U postgres

只读测试,添加-S 参数即可。

测试中对pgpool分别 安装在主机 和 从机 进行7次测试,

表格名词解释:

主机:pgpool安装在master db 服务器上。

备机:pgpool 安装在 slave db 服务器上。

单机:关闭pgpool ,只用pg 自身进行测试。

读写模式下:

单位:TPS

图2

图3

相对而言,pgpool 安装在从机的时候性能更高,对本次测试数据而言,性能提升17.28%。因为写操作对主库操作较多,如果pgpool 安装在主库服务器上,势必对pg的影响较大,测试发现性能大约是单机时候的69.6%。

只读模式下:

单位:TPS

图4

图5

以上数据可以看出在只读模式下,pgpool 安装在备用机器上性能依旧高于主机和单机的情况下。性能大约提升14.48%,安装在主机的性能依旧低于单机性能。

综上所诉,pgpool 对pg 的性能有一定的提升,提升在16%左右,这是pgpool安装在主从服务器上,如果把pgpool 单独独立出一台服务器做负载均衡,理论上此时对pg的性能应该还有提升空间。毕竟pgpool的启动还是对服务器自身也是有一定的性能消耗。

本文探讨的只是采用的pgpool的主备流复制模式,打开了负载均衡。pgpool 自身还有复制模式,在线回复,故障恢复,并行查询等功能,感兴趣可以继续探讨研究。