pgpool分析四
来源:互联网 发布:一级域名怎么备案 编辑:程序博客网 时间:2024/06/06 13:01
pgpool的child进程负责把jdbc,psql 的连接做为frontend,并把对数据库的连接做为backend,pgpool做为中间的桥,所以当通过socket进行通信时,pgpool必须使用postgresql的通信协议
child进程对于数据库的连接是存放到pool_connection_pool中的,是根据frontend传入的用户名与数据库名查找的,如不存在就新建,新建的过程中会与pool_config->backend_desc->backend_info存在的每个数据库都建立一个连接,形成一个1:N的连接,就是frontend只接收一个连接,但backend确同时管理N个对数据库的连接;如果pool_connection_pool已满了,就把已存时间最长的那个找出来重新使用。
对于传入的SQL,pgpool是经过parse的,这个parse是从postgresql的parse的改的,改动量不大,就是把一个postgresql专有的结构体替换掉,对简简单的update或insert等,pgpool不做修改直接从frontend传到backend,走的是postgresql的通信协议,对于复杂的分布式查询,就要rewrite,主要是生成新的SQL到systemdb上去执行,sysytemdb上面装有dblink这个插件,专门用来处理多个数据库的连接,rewrite的过程一方面可以直接看英文的文档中有一部分介绍,另一部分就是看pgpoolrewrite.c这个文件,凡是需要rewrite的里面全有
对于postgresql的通信协议,就是一个字母,后面跟一个整数,之后是内容,这个字母主要表明后面数据的意义,整数表明后面数据的长度,对于结构体,也全部转化成char数据了,并没有直接传递结构体,字母是区分大小写的,大小写往往代表不同的意义,要仔结研究的话,估计要再分析postgresql的源代码,pgpool的,里面有没注释,只能看下面的执行来推断字母代表的意义
pgpool最多能同时管理128个数据库,这在程序中是通过define写死了的,初始化默认是32个chilk进程,就是前端可连入数,
- pgpool分析四
- pgpool分析
- pgpool分析二
- pgpool分析三
- pgpool分析五,query cache
- pgpool
- pgpool-II 故障切换 基于pgpool-ii的集群配置(四)
- pgpool安装
- 关于pgpool
- pgpool 学习
- pgpool FAQ
- pgpool 配置
- 关于PGPool
- pgpool authentication with pgpool failed for user
- Pgpool使用心得体会
- pgpool连接池
- pgpool初步调研
- pgpool 3.5 安装
- PHP 中所有$_server函数
- 调用远程的企业服务的安全问题
- xcopy用法
- Visual C++线程同步技术剖析:临界区,时间,信号量,互斥量
- Install GlassFish server adapter on Eclipse 3.4 (Ganymede)
- pgpool分析四
- oracle数据库的启动和关闭操作
- vs2005 创建dll 和exe文件
- SQL中用insert into插入一行或多行记录
- Visual C++ Project Type
- 种瓜得豆(4)
- Silverlight - 已知的一些bug (内存泄露)和解决办法
- 关于“类不能支持Automation操作”错误的解决方法
- AMBA、AHB、APB总线简介