小fish 发表于 2016-11-14 07:29:07

DB2 进程技术模型

DB2® 进程技术模型方面的知识可以帮助您理解数据库管理器与其相关联的组件的交互方式,并且可以帮助您在发生问题时进行故障诊断。
所有 DB2 数据库服务器使用的进程技术模型都旨在简化数据库服务器与客户机之间的通信。它还确保数据库应用程序独立于数据库控制块和关键数据库文件之类的资源。
DB2 数据库服务器必须执行各种不同的任务,例如处理数据库应用程序请求或确保将日志记录写入磁盘。通常,每项任务都由一个独立的引擎可分派单元(EDU)执行。
采用多线程体系结构对于 DB2 数据库服务器而言有很多优点。由于同一进程内的所有线程可以共享一些操作系统资源,因此,新线程需要的内存和操作系统资源比进程要少。此外,在某些平台上,线程的上下文切换时间比进程短,这有助于提高性能。在所有平台上使用线程模型使得DB2 数据库服务器更易于配置,因为这样更容易根据需要分配更多 EDU,并且可以动态分配必须由多个EDU 共享的内存。
对于正在访问的每个数据库,将启动不同的 EDU 以处理各种数据库任务,例如预取、通信和日志记录。数据库代理程序是一类特殊的EDU,创建它们是为了处理应用程序对数据库的请求。
通常,您可以依靠 DB2 数据库服务器来管理 EDU 集合。但是,也可以通过一些DB2 工具来管理 EDU。例如,可以使用带有 -edus选项的 db2pd命令来列示所有活动的 EDU 线程。
每个客户机应用程序连接都有一个对数据库执行操作的协调代理程序。协调代理程序代表应用程序工作,并根据需要使用专用内存、进程间通信(IPC)或远程通信协议与其他代理程序进行通信。
DB2 体系结构提供了一个防火墙,以使应用程序与 DB2数据库服务器在不同的地址空间中运行(图 1)。防火墙将数据库和数据库管理器与应用程序、存储过程和用户定义的函数(UDF)隔开。此防火墙有助于维护数据库中数据的完整性,这是因为,它将阻止应用程序编程错误覆盖内部缓冲区或数据库管理器文件。此防火墙还提高了可靠性,原因是应用程序错误不会导致数据库管理器崩溃。<!--   -->图 1. DB2 数据库系统的进程技术模型http://www.inthirties.com/attachments/month_1008/10081108465ed6b2b018313ce3.gif


客户机程序
客户机程序可以是远程程序,也可以是在数据库服务器所在机器上运行的本地程序。客户机程序首先通过通信侦听器与数据库联系。

侦听器
通信侦听器在 DB2数据库服务器启动时启动。每种已配置的通信协议都有一个侦听器,本地客户机程序使用进程间通信(IPC)侦听器(db2ipccm)。侦听器包括:

[*]db2ipccm,用于本地客户机连接
[*]db2tcpcm,用于 TCP/IP 连接
[*]db2tcpdm,用于 TCP/IP 发现工具请求


代理程序
将为所有来自本地或远程客户机程序(应用程序)的连接请求分配相应的协调代理程序(db2agent)。创建协调代理程序之后,它将代表该应用程序执行所有数据库请求。
在分区数据库环境或者已启用查询内并行性的系统中,协调代理程序会将数据库请求分发给子代理程序(分别为db2agntp和 db2agnts)。与应用程序相关联但当前处于空闲状态的子代理程序名为db2agnta。
协调代理程序可能:

[*]已通过别名连接到数据库;例如,db2agent (DATA1)将连接到数据库别名 DATA1。
[*]已连接到实例;例如 db2agent (user1)将连接到实例 user1。

DB2数据库服务器还会将其他类型的代理程序(例如独立的协调代理程序或子协调代理程序)实例化,以便执行特定的操作。例如,独立的协调代理程序db2agnti用于运行事件监视器,而子协调代理程序db2agnsc用于在异常关闭后以并行方式执行数据库重新启动操作。
空闲代理程序驻留在代理程序池中。这些代理程序可用于处理来自代表客户机程序运行的协调代理程序或来自代表现有协调代理程序运行的子代理程序的请求。当存在大量应用程序工作负载时,配备大小适当的空闲代理程序池有助于提高性能。在这种情况下,可以根据需要立即使用空闲代理程序,而不需要为每个应用程序连接分配全新的代理程序,后一种情况涉及创建线程以及分配并初始化内存和其他资源。DB2 数据库服务器自动管理空闲代理池的大小。

db2fmp
受保护方式进程负责在防火墙外执行受防护的存储过程和用户定义的函数。db2fmp 进程始终是独立的进程,但可能是多线程进程,这取决于它执行的例程的类型。

db2vend
这是代表 EDU 执行供应商代码的进程;例如,执行用户出口程序以进行日志归档(仅适用于 UNIX®)。

数据库 EDU
以下列表包括每个数据库使用的一些重要 EDU:

[*]db2dlock,用于死锁检测。在分区数据库环境中,使用另一个线程(db2glock)来协调 db2dlockEDU从每个分区中收集的信息;db2glock仅对目录分区运行。
[*]db2hadrp,高可用性灾难恢复(HADR)主服务器线程
[*]db2hadrs,HADR 备用服务器线程
[*]db2lfr,用于处理各个日志文件的日志文件阅读器
[*]db2loggr,用于处理日志文件以处理事务处理和恢复
[*]db2loggw,用于将日志记录写入日志文件
[*]db2logmgr,用于日志管理器。管理可恢复数据库的日志文件。
[*]db2logts,用于跟踪哪些表空间在哪些日志文件中有日志记录。此信息记录在数据库目录中的 DB2TSCHG.HIS文件中。
[*]db2lused,用于更新对象用途
[*]db2pfchr,用于缓冲池预取程序
[*]db2pclnr,用于缓冲池页清除程序
[*]db2redom,用于重做主进程。在恢复期间,它处理重做日志记录并将日志记录指定给重做工作程序来进行处理。
[*]db2redow,用于重做工作程序。在恢复期间,它按照重做主进程的请求来处理重做日志记录。
[*]db2shred,用于处理日志页中的各个日志记录
[*]db2stmm,用于自调整内存管理功能
[*]db2taskd,用于分发后台数据库任务。这些任务由名为 db2taskp的线程执行。
[*]db2wlmd,用于自动收集工作负载管理统计信息
[*]事件监视器线程的标识方式如下:

[*]db2evm%1%2(%3)其中,%1可以是:

[*]g- 全局文件事件监视器
[*]gp- 全局管道事件监视器
[*]l- 本地文件事件监视器
[*]lp- 本地管道事件监视器
[*]t- 表事件监视器
%2可以是:

[*]i- 协调程序
[*]p- 不是协调程序
而 %3是事件监视器名称

[*]备份和复原线程的标识方式如下:

[*]db2bm.%1.%2(备份和复原缓冲区操纵程序)和db2med.%1.%2(备份和复原介质控制器),其中:

[*]%1是用于控制备份或复原会话的代理程序的 EDU 标识
[*]%2是用于区分属于特定备份或复原会话的线程(可能有许多个)的顺序值
例如:db2bm.13579.2标识具有 EDU 标识为 13579 的 db2agent线程控制的第二个 db2bm线程。



数据库服务器线程和进程
系统控制器(在UNIX 上为 db2sysc,在Windows® 操作系统上为db2syscs.exe)必须存在,这样数据库服务器才能工作。下列线程和进程将执行各种任务:

[*]db2acd,用于主管运行状况监视器、自动维护实用程序和管理任务调度程序的自主计算守护程序。此进程以前称为 db2hmon。
[*]db2aiothr,用于管理数据库分区的异步 I/O 请求(仅适用于 UNIX)
[*]db2alarm,用于在 EDU 请求的计时器到期时通知 EDU(仅适用于 UNIX)
[*]db2cart,用于在 userexit数据库配置参数处于启用状态时归档日志文件
[*]db2disp,客户机连接集中器分派器
[*]db2fcms,快速通信管理器发送方守护程序
[*]db2fcmr,快速通信管理器接收方守护程序
[*]db2fmd,故障监视器守护程序
[*]db2fmtlg,用于在 logretain数据库配置参数处于启用状态并且userexit数据库配置参数处于禁用状态时格式化日志文件
[*]db2licc,管理已安装的 DB2 许可证
[*]db2panic,紧急代理程序,用于在特定数据库分区达到代理程序的限制时处理紧急请求(仅用于分区数据库环境)
[*]db2pdbc,并行系统控制器,用来处理来自远程数据库分区的并行请求(仅用于分区数据库环境)
[*]db2resync,扫描全局再同步列表的再同步代理进程
[*]db2sysc,主系统控制器 EDU;它处理关键的 DB2 服务器事件
[*]db2thcln,在 EDU 终止时重新启动资源(仅适用于 UNIX)
[*]db2wdog,在 UNIX 和Linux® 操作系统上处理异常终止的看守程序
页: [1]
查看完整版本: DB2 进程技术模型