您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 高级管理内部体系结构与诊断案例V20
高级管理、内部体系结构与诊断案例侯海亮笔记1第1章DB2底层组件2第2章进程体系结构2.1DB2进程技术模型数据库会为每个客户机应用程序连接分配一个协调代理程序。协调代理程序代表应用程序工作,并根据需要使用专用内存、进程间通信(IPC)或远程通信协议与其他代理程序通信。DB2进程体系结构提供一个防火墙,以便应用程序在不同于DB2的地址空间中运行。防火墙将数据库和数据库管理器与应用程序、存储过程和用户定义的函数(UDF)隔开。DB29.5之前版本:数据库会为每个客户机应用程序连接分配一个协调代理程序。协调代理程序代表应用程序工作,并根据需要使用专用内存、进程间通信(IPC)或远程通信协议与其他代理程序通信DB29.7之后的进程技术模型如下图:2.1.1与操作系统相关的进程db2wdog进程在UNIX/Linux上,init进程是所有进程的父进程;同样,在DB2的进程中,“db2wdog”进程是所有其他DB2进程的父进程。这个进程是由操作系统的init进程派生的。在UNIX中,“db2wdog”看守程序是必需的,因为UNIX中的进程只能跟踪其父进程的标识。每次新进程启动时,“db2gds”进程就会通知DB2看守程序。db2ckpwd进程该进程用于检查DB2服务器上的用户标识和密码。由于DB2依赖于操作系统级别的认证,因此,当某个用户或应用程序连接到服务器上的数据库时,便使用该进程验证用户标识和密码。当用户发出“db2connecttosampleuserusernameusingpassword”命令后,“db2ckpwd”进程把用户名和密码与“/etc/sercurity/password”文件中相应的内容进行比较,验证用户和密码的合法性。db2licc进程该进程管理已安装的DB2许可证。2.1.2与实例相关的进程2.1.3与操作系统相关的进程ps–ef|grep–idb2|greprootdb2wdog进程我们都知道在UNIX/Linux上,init进程是所有进程的父进程;同样,在DB2的进程中,“db2wdog”进程是所有其他DB2进程的父进程。这个进程是由操作系统的init进程派生的。从上面的命令输出中我们可以看到“db2wdog”的“PPid”是操作系统的init进程。“db2wdog”进程是在UNIX和Linux操作系统上处理DB2异常终止的看守程序。“db2wdog”是“db2watchdog”的缩写,是看门狗的意思,这个进程的工作机制:db2ckpwd进程db2数据库没有数据库用户,DB2所使用的用户只能是操作系统的用户,DB2使用的安全机制是依赖操作系统或第三方安全插件来实现的。那么,如果有一个应用程序连接数据库,如何来验证器用户名和密码的合法性呢?“db2ckpwd”进程用于检查DB2服务器上的用户标识和密码。由于DB2依赖于操作系统级别的认证,因此,当某个用户或应用程序连接到服务器上的数据库时,便使用该进程验证用户标识和密码。当将AUTHENTICATION设置为SERVER时,或者当连接是从非安全的操作系统建立的时候,就会进行认证。db2licc进程该进程管理已安装的DB2许可证。2.2代理程序通信2.2.1代理程序概述DB2的代理(agent)是位于DB2服务器中的服务于应用程序请求的一些进程和线程。当有外部应用程序连接至DB2实例提出访问请求时,DB2的代理就会被激活去应答这些请求。DB2的代理一般被称为工作代理,工作代理大概有三种类型:空现代理、活动的协调代理、子代理。空闲代理:指的是没有任何任务的代理。这种代理不服务于任何远程连接也不服务于本地连接,处于一种备用或待命状态。活动的协调代理:指的是处于工作状态的代理,每一个外部应用程序产生的数据库活动连接都有一个活动协调代理来为它服务。子代理:指的是接受协调代理分发出来的工作的下一级代理。在DB2V9.5以前,只有在多分区环境(MPP)或节点内并行(INTRA_PARALLEL=ON)环境下才存在子代理,在DB2V9.5中所有环境中都可能存在子代理。2.2.2代理程序相关配置参数MAXAGENTS:全部代理的最大数量。V9.5取消。NUM_POOLAGENTS见7.2.7.2注意:在连接集中器激活的情况下,代理池中的空闲代理数目在某一时刻可能会超过NUM_POOLAGENTS的大小,以应对突发的高密度连接。NUM_INITAGENTS见7.2.7.3MAX_COORDAGETSMAX_CONNECTIONSMAX_CAGETS2.2.3连接集中器工作原理默认情况下,在实例创建的时候,MAX_CONNECTIONS与MAX_COORDAGENTS的值时一致的。这个时候一个协调代理唯一的服务于一个连接。比如说有1000个连接就要有1000个协调代理为之服务。这对服务器来说是一个很大的负担,因为每个代理都要消耗一定的资源。而当我们将MAX_CONNECTIONS的值设定得比MAX_COORDAGENTS大时(MAX_CONNECTIONSMAX_COORDAGENTS),DB2的连接集中器就被激活了。它允许多个连接对应于一个代理。DB2V9.5中连接集中器新特性新特性就是MAX_COORDAGENTS和MAX_CONNECTIONS都可以被设置成AUTOMATIC。示例:db2updatedbmcfgusingMAX_CONNECTIONS300AUTOMATIC;db2updatedbmcfgusingMAX_COORDAGENTS100AUTOMATIC;这时集中率为300/100=3,当连接数在1到100时会创建协调代理,大于100小于301时就不会创建新的协调代理了。再从301增加到400,又会增加100个协调代理,大于400小于601时又停止了…….即每增加300个连接会增加100个协调代理。连接集中器也有一些局限性:联邦数据库不支持连接集中器连接集中器对使用WITHHOLD游标的应用程序无效全局临时表在事务完成时必须显式关闭,否则连接集中器就会被关闭连接两阶段提交事务的连接只能用来连接两阶段提交事务的连接,同理,连接一阶段提交事务的连接也只能用来连接一阶段提交事务的连接。不能在线激活连接集中器。2.3实用程序相关进程2.3.1LOAD相关进程db2lbsdb2lbmXdb2lfrmXdb2lfsdb2lmrdb2lmwXdb2lriddb2ltsc分区环境下的DB2LOAD常见进程描述db2linitdb2lcatadb2lpprtdb2lpartdb2lmibmdb2lloaddb2lrdfldb2llqcldb2lmitkdb2lurexdb2lmctk2.3.2备份/恢复相关进程2.4DB2V9.5多线程体系结构概述2.4.1多线程简介2.4.2DB2V9.5主要进程查看DB2的所有进程命令:db2_ps2.4.3监控多线程AIX上查看进程下的多线程,使用命令:ps-emoTHREAD-91921136(db2sysc的进程号)Linux上使用命令:ps–lLfp1921136(db2sysc的进程号)db2pd也可以列出进程和线程。ps–emoTHREAD–p1921136(db2sysc的进程号)3第3章DB2内存体系结构3.132位与64位内存寻址3.2DB2内存体系结构实例共享内存实例总内存(INSTANCE_MEMORY)数据库A数据库共享内存DATABASE_MEMORY应用程序全局内存APPL_MEMORY数据库B数据库共享内存DATABASE_MEMORY应用程序全局内存APPL_MEMORY代理实例共享内存实例共享内存Mon_heap_sz,audit_buf_szFcm_num_buffers数据库共享内存数据库缓冲池隐藏的缓冲池LOCKLIST编目缓存包缓存排序堆数据库堆UTIL_HEAP_SZ数据库共享内存数据库缓冲池隐藏的缓冲池LOCKLIST编目缓存包缓存排序堆数据库堆UTIL_HEAP_SZ1……NUMDB应用组共享内存appgroup_mem_sz应用组共享内存appgroup_mem_sz1...应用的数量每个应用组应用的数量代理私有内存代理私有内存代理私有内存代理私有内存私有排序(sortheap,sheapthresh)应用堆(applheapsz)查询堆(query_heap_sz)语句堆(stmtheap)统计堆(stat_heap_sz)Java解释器堆(java_heap_sz)代理堆(agent_stack_sz)(windowsonly)1...maxagentsDB2存在4种不同的内存集(MemorySets)用于拆分和管理内存。这4种内存集分别是:实例共享内存(INSTANCESHAREMEMORY)数据库共享内存应用程序组共享内存代理私有内存每种内存集由各种不同的内存池(亦称堆)组成。3.2.1实例共享内存监控堆(mon_heap_sz)审计缓冲(audit_buf_sz)数据库管理器共享内存(包括FCM)下面的数据库管理器配置(DBMCFG)参数控制着对实例共享内存以及其中个别内存池的限制:实例内存(INSTANCE_MEMORY)监视器堆(MON_HEAP_SZ)审计缓冲区(AUDIT_BUF_SZ):用于DB2AUDIT实用程序。此内存区用于数据库审计活动。FASTCOMMUNICATIONSBUFFERS(FCM_NUM_BUFFERS):用于分区之间的节点间通信。仅适用于多分区的实例。---------------以下内容有误,应以IBM信息中心为准---------------/*INSTANCE_MEMORY参数指定为实例管理预留的内存数量,默认值是AUTOMATIC。这意味着DB2将根据监视器堆、审计缓冲区和FCM缓冲区的大小计算当前配置所需的实例内存数量。此外,DB2还将分配一些额外的内存,作为溢出缓冲区。每当某个堆超出了其配置的大小时,便可以使用溢出缓冲区来满足实例共享内存区内任何对的峰值需求。在这种情况下,个别堆的设置是软限制的,他们可以在内存使用的峰值期间进一步增长。如果INSTANCE_MEMORY被设置为某一个数字,则采用INSTANCE_MEMORY与MON_HEAP_SZ、AUDIT_BUF_SZ和FCM_NUM_BUFFERS的和之间的较大者。这时,对实例内存就施加了一个硬性的限制,而不是软限制。当达到这个限制时,就会收到内存分配错误。*/---------------以下内容有误,应以IBM信息中心为准---------------------------------以下内容来自IBM----START----------------------instance_memory的缺省值为AUTOMATIC。AUTOMATIC设置将导致在激活数据库分区时计算值。计算值介于系统上的物理RAM的75%到95%之间-系统越大,此百分比越高。对于具有内存使用量限制的DB2数据库产品,计算值也会受到产品许可证允许的最大值的限制。对于具有多个逻辑数据库分区的数据库分区服务器,此计算值是除以逻辑数据库分区数而获得的值。从V9.7FP1和V9.5FP5开始,对于没有内存使用量限制的DB2数据库产品,AUTOMATIC设置的计算值不会对实例中分配的内存施加限制。对于V9.7和V9.5FP4或更低版本,AUTOMATIC设置的计算值表示对于所有DB2数据库产品的限制。动态更新instance_memory要动态更新instance_memory,需要连接实例。有关详细信息,请参阅ATTACH命令。对于具有内存使用量限制的DB2数据库产品,要动态更新instance_memory,必须指定一个小于任何许可证限制的值,或者指定AUTOMATIC。否则,更新将失败并且返回SQL5130N错误消息。要动态更新instance_memory,必须指定一个小于物理RAM量的值,或者指定AUTOMATIC。否则,将延迟
本文标题:高级管理内部体系结构与诊断案例V20
链接地址:https://www.777doc.com/doc-1952541 .html