`

带你深入了解IBM DB2的通信与连接过程

    博客分类:
  • DB2
阅读更多

http://www.searchdatabase.com.cn/showcontent_13734.htm

带你深入了解IBM DB2的通信与连接过程(二)

 
   | |

导读:本文主要介绍了连接集中器以及DB2 V9.5 新特性。

关键词:IBM DB2 通信与连接过程 DB2的代理 连接集中器特性

正在加载数据...

  连接集中器

  1. 基本原理

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

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

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

  比方说,代理池是一个饭店,在饭店里通常都是顾客多于服务员。刚开始,还没有顾客 (相当于外部应用) 的时候。有一些值班的服务员在饭店里待命(相当于实例启动时在代理池中创建的空闲代理NUM_INITAGENTS)。一旦来了应用请求(顾客),调度程序(相当于领班)就去安排服务员开始工作,服务员就开始忙起来去招呼顾客。这时服务员的角色相当于协调代理。她们接待完顾客后便将菜单传达给厨师和小工 ( 相当于子代理 )。而当顾客越来越多,超过了最初的值班服务员数量。服务器就生成新的代理来服务于这些应用,就好像是从员工宿舍叫来更多的服务员来工作。当在场服务员数达到了一个数目(MAX_COORDAGENTS),饭店的所有服务员都在工作了,没有其他的在编服务员了。这时新来的顾客 (外部应用) 只能坐在座位上等候了。MAX_CONNECTIONS在这里相当于饭店里的总的就餐座位数,当顾客数目 (外部应用) 达到了这个数值,后来的顾客只能离去了(相当于连不上数据库)。

  这里需要注意的是MAX_CONNECTIONS并不是指同时连在实例上的活动的连接,因为有些连接即使连在实例上了,也要等候协调代理服务,当前活动的连接数与活动的协调代理数相等。当一个协调代理处理完一个应用程序后,它会被分配给其它等候的应用,相当于服务员去服务于其他等待着的顾客。在饭店中还有一些座位是专门为服务员休息准备的( 这个座位数相当于 NUM_POOLAGENTS)。当顾客渐渐散去,越来越少的时候,部分服务员(协调代理)已经无事可做,就返回这些座位(变成空闲代理)。当这些座位也被占满了,那么再有服务员(协调代理) 返回休息时,就没有可供休息的座位了( 假设服务员不能坐就餐座位)。这些服务员就只有返回员工宿舍了( 相当于代理的删除 )。图1反映了这一流程。图中实线箭头表明当前状态,虚线箭头表明将要发生的事件。

  图 1. 代理的工作流程图

   代理的工作流程图

  2. DB2 V9.5 新特性

  在 DB2 V9.5中有一个新特性,就是MAX_CONNECTIONS 和 MAX_COORDAGENTS都可以被设置成AUTOMATIC。如果你认为系统可以承受所有的连接,同时又想限制被协调代理消耗的资源,你可以只将MAX_CONNECTIONS设定为AUTOMATIC,MAX_COORDAGENTS设定为一个数值。这时系统认为可以连到实例的连接数时无限的。如果你对最大连接数和协调代理数都不想做限制的话,你可以将它们都设为AUTOMATIC。如果这时MAX_CONNECTIONS设定为AUTOMATIC的数值大于 MAX_COORDAGENTS 设定为AUTOMATIC的数值,连接集中器也就被激活了。而后,服务器就以刚才的两个数值之比作为参照 ( 这里叫做集中率 ) 按比例根据连接数来相应调整协调代理。示例如下:

  db2 update dbm cfg using MAX_CONNECTIONS 300 AUTOMATIC;

  db2 update dbm cfg using MAX_COORDAGENTS 100 AUTOMATIC;

  这时集中率为300/100=3,当连接在1到100时会创建协调代理,大于100小于301时就不会创建新的协调代理了。再从301增加到400,又会增加100个协调代理,大于400小于601时又停止增加了……即每增加300个连接会增加100个协调代理。当前的具体数值可以通过db2 attach to instance_name,db2 get dbm cfg show detail得到。在这里允许设为AUTOMATIC有下面两种情况:

  ◆MAX_CONNECTIONS为AUTOMATIC 而MAX_COORDAGENTS为一定值。

  ◆MAX_CONNECTIONS与MAX_COORDAGENTS同时为AUTOMATIC。

  当然连接集中器也有一些局限性:

  ◆联邦数据库不支持连接集中器

  ◆连接集中器对使用withhold feature的应用程序无效

  ◆全局临时表在事务完成时必须显式关闭,否则连接集中器就会被关闭

  ◆连接两阶段提交事务的连接只能用来连接两阶段提交事务的连接,同理连接一阶段提交事务的连接也只能用来连接一阶段提交事务的连接。

  ◆不能在线激活连接集中器,也就是说,需要重启实例才可生效。

  如果既不想使用连接集中器,又不想限制数据库连接的数目,可以运行下面的命令:

  db2 update dbm cfg using MAX_COORDAGENTS AUTOMATIC;

  db2 update dbm cfg using MAX_CONNECTIONS AUTOMATIC;

带你深入了解IBM DB2的通信与连接过程(二)

 


带你深入了解IBM DB2的通信与连接过程
 带你深入了解IBM DB2的通信与连接过程(三)
 带你深入了解IBM DB2的通信与连接过程(二)
 带你深入了解IBM DB2的通信与连接过程(一)

 

原文出处:http://tech.it168.com/a2008/0805/199/000000199567_2.shtml
分享到:
评论

相关推荐

    db2 数据库连接客户端

    DB2数据库连接客户端是数据库管理员和开发人员用来与IBM DB2数据库进行交互的重要工具。在这个场景中,我们讨论的是一个基于Java编写的客户端工具,它为用户提供了方便的图形用户界面(GUI)来管理和操作DB2数据库。...

    IBM DB2 jdbc 驱动 for v10.5(官方版)

    1. Type 1驱动(JDBC-ODBC桥接):这种类型的驱动依赖于ODBC驱动来与DB2通信,适合于已经安装了ODBC数据源的情况。但在Java环境中,Type 1驱动并不是首选,因为它需要额外的ODBC层,性能较低。 2. Type 2驱动(部分...

    .Net连接DB2OLEDB

    这个驱动包含了一系列的DLL文件,它们提供了与DB2通信所需的接口和功能。在描述中提到的"setup_RTCL.exe"可能是一个安装程序,用于部署这些必要的组件到开发环境或目标运行环境中。 要开始连接,首先确保系统已经...

    IBM.Data.DB2.dll

    通过使用这个DLL,开发者可以利用C#、VB.NET或其他.NET语言来编写与DB2数据库交互的应用程序,无需深入了解DB2底层的工作机制。 该动态链接库提供的主要功能包括: 1. 连接管理:提供创建和管理数据库连接的类,如...

    db2 jdbc 通过客户端连接db2

    你可以通过反编译`db2java.jar`或阅读IBM官方文档来了解其内部工作原理,这对于理解数据库操作的底层机制和优化数据库访问性能非常有帮助。 总之,DB2 JDBC连接涉及了Java编程、数据库连接、SQL执行和资源管理等多...

    DB2,Oracle连接字符串

    例如,如果你正在使用.NET框架开发应用程序,那么可能需要IBM.Data.DB2.dll这个类库来建立连接。连接字符串的格式可能会类似这样: ``` Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=...

    IBM DB2命令速查

    本文将深入探讨IBM DB2的一些关键概念和特性,以及与之相关的命令。 首先,IBM DB2提供了多种不同级别的产品,满足不同规模和需求的组织。企业版(ENTERPRISEEDITION)适合大型企业,提供全面的功能和服务;工作组...

    IBM DB2应用指南

    - **作用**:使得 DB2 Connect 能够与远程 DB2 数据库进行通信。 - **特点**: - 支持数据复制、备份等功能。 - 适用于大型企业级应用中的数据分布管理。 #### 四、安全特性 - **身份验证**:通过 Kerberos V 等...

    db2 jdbgc连接

    DB2 JDBCG连接指的是使用Java的JDBC(Java Database Connectivity)接口与IBM的DB2数据库进行通信的方式。在Java应用程序中,JDBC提供了一种标准的API,使得开发者能够以统一的方式访问各种不同的数据库系统,包括...

    db2驱动 driver

    DB2驱动是IBM公司开发的关系型数据库管理系统DB2与Java应用程序进行交互的重要组件。在Java环境中,通过JDBC(Java Database Connectivity)接口,开发者可以利用DB2驱动来连接和操作DB2数据库。本文将深入探讨DB2...

    db2jcc.jar

    DB2jcc.jar是IBM DB2数据库连接器的一个重要组件,它是Java连接器(JDBC)驱动程序的具体实现,允许Java应用程序与DB2数据库进行通信。在这个特定的场景中,"com.ibm.db2.jcc.DB2Driver"是DB2 JDBC驱动程序的主类,...

    sqoop连接db2的驱动包

    这两个驱动包是IBM DB2数据库的Java连接器,用于建立Java应用程序(如Sqoop)与DB2之间的通信桥梁。 首先,让我们深入了解一下DB2的Java连接器: 1. **db2jcc4-9.7.jar**:这是DB2 JDBC Type 4驱动程序,Type 4...

    JavaEE项目DB2数据库连接jar包

    首先,让我们深入了解一下JavaEE项目中如何连接DB2数据库。在Java中,我们通常使用JDBC(Java Database Connectivity)API来建立数据库连接。JDBC是Java标准的一部分,它提供了一组接口和类,使得Java程序能够与各种...

    oracle和db2连接数据库

    本文将深入探讨如何使用Java编程语言通过JDBC(Java Database Connectivity)连接Oracle和DB2数据库,以及涉及的相关知识点。 首先,Oracle数据库是由甲骨文公司开发的,广泛用于企业级应用,以其高性能、高可用性...

    cognos connect db2java

    在与IBM DB2数据库连接时,Cognos Connect需要特定的Java数据库连接(JDBC)驱动程序来建立通信桥梁。 `db2jcc.jar`和`db2jcc_license_cu.jar`是IBM DB2数据库的JDBC驱动程序,用于Java应用程序与DB2数据库之间的...

    DB2数据库连接所需的一些驱动包

    在与DB2进行交互时,特别是通过编程语言(如Java)进行连接时,需要依赖特定的驱动包来建立通信桥梁。标题提到的"DB2数据库连接所需的一些驱动包"就是这个关键的桥梁。 首先,我们来看看描述中提及的两个驱动包: ...

    db2数据库

    从给定的文件信息来看,这里涉及到的是IBM DB2数据库的学习资料,这表明内容将围绕IBM DB2数据库的使用、管理以及与之相关的技术进行展开。以下是对标题、描述及部分文档内容中提及的关键知识点的详细解读: ### 1....

    DB2 Connect用户指南

    从给定的文件信息来看,这是一份关于IBM DB2 Connect的用户指南,主要涵盖了DB2 Connect的使用、配置以及与各种技术环境的集成方法。下面将根据标题、描述、标签以及部分内容,深入解析其中涉及的关键知识点。 ### ...

    DB2的ipv4_v6连接及各个系统参数查询.zip

    本文将深入探讨如何使用Java的JDBC(Java Database Connectivity)技术来连接DB2数据库,以及涉及的IPv4和IPv6网络连接方式。同时,我们也会介绍如何查询DB2的系统参数,以优化数据库性能。 首先,Java JDBC是Java...

Global site tag (gtag.js) - Google Analytics