Pgpool-II相当于中间件,Pgpool-II与PG是解耦合的,基于这样的机制,Pgpool-II可以搭建在已经存在的任意版本的PG主从结构上,主从结构的实现与Pgpool-II无关,可以通过slony等工具或者PG自身的流复制机制实现。
一、拓扑结构
本次实验是基于PG自身的流复制。拓扑结构,如图1所示,
1.一台Master PG 主库。
2.一台Slave PG 从库。
3.Pgpool将会分别安装在主机 和 从机进行测试。
二、测试
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
相对而言,pgpool 安装在从机的时候性能更高,对本次测试数据而言,性能提升17.28%。因为写操作对主库操作较多,如果pgpool 安装在主库服务器上,势必对pg的影响较大,测试发现性能大约是单机时候的69.6%。
只读模式下:
单位:TPS
以上数据可以看出在只读模式下,pgpool 安装在备用机器上性能依旧高于主机和单机的情况下。性能大约提升14.48%,安装在主机的性能依旧低于单机性能。
综上所诉,pgpool 对pg 的性能有一定的提升,提升在16%左右,这是pgpool安装在主从服务器上,如果把pgpool 单独独立出一台服务器做负载均衡,理论上此时对pg的性能应该还有提升空间。毕竟pgpool的启动还是对服务器自身也是有一定的性能消耗。
本文探讨的只是采用的pgpool的主备流复制模式,打开了负载均衡。pgpool 自身还有复制模式,在线回复,故障恢复,并行查询等功能,感兴趣可以继续探讨研究。