DB2的代理和连接集中器

数据库
本文详细描述了 DB2 Universal Database代理的工作原理以及连接集中器的特性,并对DB2 连接上常见的问题及代理的优化作了详细的分析。希望通过本文让用户能够了解 DB2 的连接机制和客户端与服务器端的交互作用。

本文为您介绍了DB2 Universal Database代理的概念以及工作原理,连接集中器的概念及特性,并对DB2 连接上常见的问题及代理的优化作了详细的分析。供您参考,希望对您有所帮助。

DB2 的代理 (agent) 是位于 DB2 服务器中的服务于应用程序请求的一些进程或线程。当有外部应用程序连接至 DB2 实例提出访问请求时,DB2 的代理就会被激活去应答这些请求。一般 DB2 的代理被称为工作代理,工作代理大概有三种类型:空闲代理、活动的协调代理、子代理。

◆空闲代理:指的是没有任何任务的代理。这种代理不服务于任何远程连接也不服务于本地连接,处于一种备用或待命状态。

◆活动的协调代理:指的是处于工作状态的代理,每一个外部应用程序产生的数据库活动连接的都有一个活动协调代理来为它服务。

◆子代理:指的是接受协调代理分发出来的工作的下一级代理。在 DB2 V95 以前,只有在多分区环境 (MPP) 或节点内并行环境 (SMP) 下才存在子代理,在 DB2 V95 中所有环境中都可能存在子代理。

在 DB2 服务器中有一个代理池,当实例刚启动后这里便有一些代理(其数量取决于实例参数 NUM_INITAGENTS)。在没有任何数据库连接时,它们处于待命状态,就是空闲代理。而当有外部程序连接至数据库时,这些代理开始得到命令去服务于这些新建的连接,这时它们就变成了活动的协调代理。这些协调代理再将请求逐步细分,分配给下一级代理即子代理去处理。如果当前的代理都已经在工作了,同时又来了新的请求,数据库管理器会产生一个新的代理去应答。当事务处理完毕而且数据库连接断开后,协调代理要么返回代理池变回空闲代理,要么就自动消失了(取决于实例参数 NUM_POOLAGENTS)。这就是一个代理的生命周期。

相关的配置参数

通过执行 DB2 get dbm cfg 可以看到以下几个和代理相关的实例参数:MAXAGENTS,NUM_POOLAGENTS,NUM_INITAGENTS,MAX_COORDAGENTS,MAX_CONNECTIONS,MAXCAGENTS。下面对它们做一下简要介绍:

◆MAXAGENTS:这个参数为当前实例中全部代理的数量,包括协调代理,空闲代理和子代理之和。不过这个参数在 DB2 V95 中已经不再使用了。 #p#

◆NUM_POOLAGENTS:这个参数用来控制代理池中的空闲代理的数量。当活动的代理完成工作返回代理池变成空闲代理时,如果数量超过了这个参数,那么这个代理就会自动消失了。注意:在连接集中器激活的情况下,代理池中的空闲代理数目在某一时刻可能会超过 NUM_POOLAGENTS 的大小,以应对突发的高密度连接。

◆NUM_INITAGENTS:这个参数就是前面提到的在实例刚刚启动时便生成的一些空闲代理的数目。这是为了提高性能,因为这些代理可以随时变成协调代理去应答外部应用请求,而不用临时再生成新的代理。

◆MAX_COORDAGENTS:这个参数决定了在实例中在同一时刻***的协调代理的数目 ( 在多分区环境指的是一个节点上的***协调代理数 )。

◆MAX_CONNECTIONS:这个参数决定了允许连接至一个实例的***的连接数 ( 在多分区环境指的是一个节点上的***连接数 )。

◆MAXCAGENT:这个参数决定了实例中的令牌的数量,一个协调代理只有得到了令牌才能去服务于应用程序。当没有得到令牌时,协调代理只能等候。不过这个参数在 DB2 V95 中也已经取消了。

还有一个连接参数 MAXAPPLS 可以通过 db2 get db cfg for database_name 得到,它是一个数据库级别的参数,这个参数决定了同时连接至一个数据库的***连接数。在一个实例下的所有数据库的 MAXAPPLS 值之和不能超过实例参数 MAX_CONNECTIONS。 #p#

连接集中器

基本原理

从 DB2 V8 开始,DB2 实例中有一个叫做连接集中器的特性,可以用来优化数据库的连接。缺省情况下,在实例创建的时候,MAX_CONNECTIONS 与 MAX_COORDAGENTS 的值是一致的。这个时候每一个协调代理唯一地服务于一个连接。比如说有 1000 个连接就要有 1000 个协调代理为之服务。这对服务器是一个很大的负担,因为每一个代理都要消耗一定的资源。而当我们将 MAX_CONNECTIONS 的值设定的比 MAX_COORDAGENTS 大,这时 DB2 的连接集中器就被激活了。它允许多个连接对应于一个代理。

连接集中器的功能与 DB2 CONNECT 中的连接池相似。不过连接集中器比连接池的优点在于它能够重用外部连接,即多个排队的应用程序可以重复使用一个存在的连接,而连接池则需要先删除再重建一个连接去服务于一个新的应用程序。在连接集中器中每个协调代理并不唯一地服务于一个连接,当某个外部连接断开后,协调代理被分配给其他连接。这样。同时允许更多的连接连到数据库,并且减少了每个连接的内存消耗,避免了频繁的删除和创建代理所带来的系统开销。下面是连接集中器的具体工作原理:

首先将 MAX_CONNECTIONS 的值设定的大于 MAX_COORDAGENTS 去激活连接集中器。在连接集中器中代理被分成逻辑代理和工作代理。逻辑代理与外部应用程序对应,它并不对应与某个特定的引擎分配单元 (EDU)。工作代理和前面定义的一样,是具体的引擎分配单元。当逻辑代理多于工作代理时连接集中器就被激活了。当有多个连接同时连接到服务器时,连接被一一分配给各个逻辑代理。逻辑代理再去请求工作代理的服务。
 

责任编辑:段燃 来源: 互联网
相关推荐

2010-08-06 15:05:04

IBM DB2连接集中

2010-08-19 09:37:41

DB2 V9.7 语句

2009-05-19 09:10:26

代理工作代理DB2

2010-11-04 15:56:13

DB2内连接查询

2010-08-27 09:30:58

DB2eclipse连接

2010-08-06 15:21:08

DB2数据库代理

2010-11-01 17:10:45

DB2命令行

2010-11-02 16:51:33

DB2连接服务器

2010-08-26 10:13:52

DB2java连接

2011-05-27 15:51:44

DB2

2010-07-27 09:09:07

JDBC连接DB2

2010-08-18 16:53:35

连接DB2数据库

2010-08-27 14:39:46

db2连接数据库

2010-11-02 11:49:18

SQL SERVER连

2010-11-04 10:25:31

DB2表连接

2010-09-01 10:59:42

DB2服务器

2010-07-27 14:33:24

DB2数据库

2010-09-07 08:35:40

DB2常用函数

2010-09-14 15:39:24

2010-08-25 11:11:59

DB2JDBC连接
点赞
收藏

51CTO技术栈公众号