pgpool-II的性能缺陷

简介:

pgpool-II在运行在 replication mode的时候,性能低下。

经过分析,发现无解:这是由pgpool-II的执行方式决定的。
pgpool-II 刚开始运行的时候,就会开很多子进程,缺省值128。
但是,每当客户端来一个请求,就会有一个子进程全权负责,别的子进程不插手。

而在replication mode,该子进程需要和多个DB节点打交道:
比如把客户端的SQL文,发送给每一个DB节点。
在给各个节点发送SQL文的时候,如果想要效率高,要么开子进程或线程来并行。要么采用某种非阻塞方式向各个节点发请求。

然而,pgpool-II的开发者,采用了效率最为低下的做法:顺次执行。就是说对第一个DB节点发SQL文,待第一个DB节点运行此SQL文结束,再向第二个DB节点发SQL文。

此种做法,如果运行在业务不繁忙的系统里尚可,在繁忙的系统里,那就是致命的缺陷。

验证如下:先在各个DB节点,作如下的函数:

复制代码
CREATE FUNCTION loopforid()
RETURNS INTEGER LANGUAGE plpgsql AS $$
  DECLARE
     ret INTEGER;
  BEGIN
     PERFORM pg_sleep(30);
     ret:=100;
     
     RETURN ret;
  END; $$;
复制代码

然后,在pgpool-II中执行类似:update a8 set id=(select loopforid() ) where id=10; 的操作。

再来看pgpool-II的log,可以看到:

在DB1 节点执行完毕后,又过了大约30秒,才开始在DB2节点执行。所以说,它是串行的。

因此,当后台DB节点增加的时候,通过pgpool-II的replication mode来运行的程序,其insert/update/delete性能将随着节点数目的增加而成比例下降。








本文转自健哥的数据花园博客园博客,原文链接:http://www.cnblogs.com/gaojian/archive/2012/08/08/2627868.html,如需转载请自行联系原作者

目录
相关文章
|
缓存 负载均衡 关系型数据库
Pgpool-II实现高可用+读写分离+负载均衡(一)---- 规划及安装
Pgpool-II是一款工作在PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件。提供了连接池、复制、负载均衡、限制过多连接、看门狗、查询缓存等功能。
|
存储 算法 索引
RLE格式分割标注文件表示
RLE格式分割标注文件表示
1286 0
|
负载均衡 关系型数据库 PostgreSQL
【一文搞懂PGSQL】6. PostgreSQL + pgpool-II 实现读写分离
本文介绍了如何使用 PostgreSQL 和 pgpool-II 实现读写分离。pgpool-II 支持连接池、负载均衡等功能,适用于多种模式。文中详细描述了安装、配置及启动过程,并提供了示例命令,帮助读者快速搭建并验证读写分离环境。通过配置 `pgpool.conf` 文件指定监听地址、端口及节点信息等参数,确保系统的高效运行与故障转移。
|
网络协议
keepalived对后端服务器的监测方式实战案例
关于使用keepalived进行后端服务器TCP监测的实战案例,包括配置文件的编辑和keepalived服务的重启,以确保配置生效。
170 1
keepalived对后端服务器的监测方式实战案例
|
Ubuntu Linux
Ubuntu重启后进入initramfs导致无法开机解决方案
今天,我的电脑意外关机,重新开机后打开了虚拟机。该虚拟机使用的是 Ubuntu 22.04 系统。但重启后,系统一直显示(initramfs):,导致无法正常启动。最后,在网上查找了一些解决方案,成功解决了这个开机问题。在这篇文章中,我将与大家分享解决方案的过程和经验。
1110 0
Ubuntu重启后进入initramfs导致无法开机解决方案
|
存储 监控 持续交付
Docker容器的优化和性能调优技巧
Docker已经成为了现代应用程序开发和部署的核心工具之一。然而,要确保Docker容器在生产环境中运行稳定、高效,需要一些优化和性能调优的技巧。本文将介绍一些关键的Docker容器优化和性能调优策略,并提供丰富的示例代码,以帮助大家充分利用Docker的潜力。
|
关系型数据库 API 数据库
基于Patroni的PostgreSQL高可用环境部署
在部署PostgreSQL到生产环境中时,选择适合的高可用方案是一项必不可少的工作。本文介绍基于Patroni的PostgreSQL高可用的部署方法,供大家参考。
7676 1
|
负载均衡 关系型数据库 网络安全
Pgpool-II实现高可用+读写分离+负载均衡(二)---- 配置篇
Pgpool-II是一款工作在PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件。提供了连接池、复制、负载均衡、限制过多连接、看门狗、查询缓存等功能。本篇介绍详细配置。