现在的位置: 首页 > 综合 > 正文

DB2系统结构的理解

2013年01月09日 ⁄ 综合 ⁄ 共 4182字 ⁄ 字号 评论关闭

 下图描述了DB2的进程模型,长方形代表处理进程,椭圆形代表处理线程,DB2的主进程是db2sysc,在这个处理进程下有许多线程,最主要的线程也是叫db2sysc,这个主要的线程派生了其他子线程。当一个远程的应用程序比如采用sql connect语句链接服务器时,通讯协议的远程监听器将接收这个请求,并联系db2agent,agent是一个代表DB2实现一些小操作的处理程序,当发出请求的应用程序是本地的,也就是和DB2服务器在同一服务器上,如果不在同一个服务器上,那么采用db2tcpcm处理本地请求,如果在一台服务器上采用db2ipccm线程来处理请求。如果发生本地和异地并行的情况,db2agent会生成其他线程的代理db2agntp线程。其他的线程如db2pfchr、db2loggr、db2dlock它们应用到不同的目的。

 

 

 

DB2 DB2 9.5 进程信息:

db2sysc (Linux)

db2syscs (Win)

DB2的主系统控制器或者引擎,对于一个完整的分区其中只有一个包含多线程的主引擎进程。所有的引擎可以分派单元都是进程中的线程。没有这个进程数据库服务器是无法工作的。

 

db2acd:

主管运行状况监视器和自动维护实用程序的自主计算守护程序。此进程以前称为db2hmon

 

Db2wdong

DB2的看门狗,是db2sysc的父进程。如果db2sysc集成非正常终止,它将清除所占用的资源。

 

Db2vend

在主进程之外的围栏进程,所有db29.5的第三方代码都在这个进程中运行。

 

Db2fmp

              围栏进程,在防火墙外运行用户的存储程序和用户定义函数代码。此进程代替了db2老版本中的db2udfdb2dari进程。

 

DB2V9.5的线程信息:

Db2sysc:系统控制线程。负责实例的启动关闭和管理正在运行的实例。

Db2tcpcmtcoip交互监听器

Db2agent:协调代理代表应用程序实现数据库操作

Db2agntp:如果intra-parallel的属性是yes,那么会产生活动的副代理。它会为应用程序执行数据库操作。Dbagent将协调不同的db2agntp副代理的工作。

Db2pfchrdb2异步io数据读取

Db2pclnrdb2异步io数据写入

 

Db2内存模型由不同区域构成,这里的内存是存在于实例层、数据库层、应用程序和代理层中的内存。

 

 

 

当一个实例启动后,系统就为数据库管理器分配共享的内存。这需要花费很大的空间。当第一次连接数据库时,就会分配数据库全局内存database global memory。在此内存块中,缓冲池是最重要的一个部分,尤其体现在改善系统查询的操作时。缓冲池的大小决定整个DGM的大小。每个代理可以使用大约3-5M内存,在没有连接集中器的情况下,几个链接可以使用一个代理。连接集中器一般可以理解为JDBC

 

Db2存储模型

数据页和扩展数据块:页是在db2中的最小存储单元。数据页大小允许为4k8k16k32k。扩展数据块是一组数据页。由于每次处理一页会影响数据库的性能,所以db2以扩展数据块为单位进行处理。页大小和扩展数据块大小在使用缓冲池和表空间的时候定义。

       缓冲池:是表和索引数据在内存中的缓存。减少持续直接的io存取,提供异步读取和写入来提高系统的性能。也就是说db2预测那些需要用到的数据页,然后再使用它们之前预先将它们读取到缓冲池。每个数据库至少需要一个缓冲池,而且对于每个表空间,至少必须存在一个符合制定大小的缓冲池。

 

Non-blockedblocked区域表示数据页以块或者非块存在的数目。基于块的缓冲池保证硬盘上连续的移动块区域中,能够提高性能,页面数必须小于98%的缓冲池页面数目。

 

表空间:处于逻辑的数据表和系统物理内存缓冲池以及硬盘之间的逻辑接口。用create tablespace语句创建一个表空间,创建时制定如下的参数:页大小,缓冲池名称,扩展的大小,读取的大小。

 

表空间有三种

1、  常规表空间:用于用户的数据表,比如默认创建的userspace1

2、  大型表空间:可以作为原有数据表中分离lob数据的可选表空间。如果创建时指明purexml的支持,它也可以作为存储xml数据,在这种情况下,大型表空间是默认的表空间。

3、  临时表空间:系统临时和用户临时,系统临时用于db2的内存操作,比如排序比如tempspace,用户临时用于创建用户定义全局临时表,内存中的临时表。

 

表空间的管理有几种方式:

1、  系统管理,也成为system managed storage表空间,也就是SMS。由操作系统来管理。表空间使用的是操作系统文件系统的文件夹,存储空间不是预先分配的,但是表空间文件能够动态增长,当指定了容器后,它就在创建表空间时固定,以后不能再添加其他表空间容器,除非使用转向存储。

2、  由数据库管理,也叫数据库管理存储(DMS),它由db2来管理表空间的存储。这种表空间的管理需要数据库管理员的人工干预,能够预先分配容器或者裸设备。使用裸设备时,数据是直接写入到设备中而没有使用io缓存。这种管理方式能够增加、删除改变容器,性能好。

3、  自动存储管理,具备sms的自主管理特点又具备DMS的灵活性和高性能表现。所以从DB2V9.5开始这是默认的表空间类型。使用这种类型,用户首先指明一个逻辑存储设备组,不需要指明容器,容器在存储路径中自动创建。

 

数据是怎么存储在表空间的?

       默认情况下,也就是自动存储管理,DB2每次写入到硬盘都会跨越若干个容器,例如,使用4K大小的dms表空间,扩展数据块页数为8,使用3个容器。这就是说,在写入下一个容器之前,会将32K数据(4k×8/扩展块=32K)。

 

 

DB2目录也就是常见的DB2编目,它显示了所有您可以连接到的本地和远程数据库。对于本地数据库,将会有一个指针指向这个本地数据库目录。对于远程数据库,它将有一个指向结点目录。使用以下命令查看目录内容:

C:/IBM/SQLLIB/BIN>db2 list db directory

 

 系统数据库目录

 

 目录中的条目数 = 6

 

数据库 1 条目:

 

 数据库别名                      = EXPRESS2

 数据库名称                               = EXPRESS2

 本地数据库目录                  = C:

 数据库发行版级别                = c.00

 注释                            =

 目录条目类型                    = 间接

 目录数据库分区号                  = 0

 备用服务器主机名                =

 备用服务器端口号                =

 

数据库 2 条目:

 

 数据库别名                      = TARGET

 数据库名称                               = TARGET

 本地数据库目录                  = C:

 数据库发行版级别                = c.00

 注释                            = q复制目标数据库

 目录条目类型                    = 间接

 目录数据库分区号                  = 0

 备用服务器主机名                =

 备用服务器端口号                =

 

数据库 3 条目:

 

 数据库别名                      = EXPRESS

 数据库名称                               = EXPRESS

 本地数据库目录                  = C:

 数据库发行版级别                = c.00

 注释                            =

 目录条目类型                    = 间接

 目录数据库分区号                  = 0

 备用服务器主机名                =

 备用服务器端口号                =

 

数据库 4 条目:

 

 数据库别名                      = GSDB

 数据库名称                               = GSDB

 本地数据库目录                  = C:

 数据库发行版级别                = c.00

 注释                            = Version 2.1 for DSA2.1

 目录条目类型                    = 间接

 目录数据库分区号                  = 0

 备用服务器主机名                =

 备用服务器端口号                =

 

数据库 5 条目:

 

 数据库别名                      = NEWDB

 数据库名称                               = NEWDB

 本地数据库目录                  = C:

 数据库发行版级别                = c.00

 注释                            =

 目录条目类型                    = 间接

 目录数据库分区号                  = 0

 备用服务器主机名                =

 备用服务器端口号                =

 

数据库 6 条目:

 

 数据库别名                      = SAMPLE

 数据库名称                               = SAMPLE

 本地数据库目录                  = C:

 数据库发行版级别                = c.00

 注释                            =

 目录条目类型                    = 间接

 目录数据库分区号                  = 0

 <

抱歉!评论已关闭.