本文为您介绍了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)。工作代理和前面定义的一样,是具体的引擎分配单元。当逻辑代理多于工作代理时连接集中器就被激活了。当有多个连接同时连接到服务器时,连接被一一分配给各个逻辑代理。逻辑代理再去请求工作代理的服务。
新闻标题:DB2的代理和连接集中器
分享路径:http://www.shufengxianlan.com/qtweb/news14/321764.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联