您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 51CTO下载-第6章
数据库配置参数调整在DB2数据库中,有实例配置参数(DBMCFG)、DB配置参数(DBCFG)和DB2注册变量(db2set–lr)3种配置参数。DB2数据库利用这3种配置参数来进行数据库约束和资源限制。数据库配置参数对数据库来说非常重要,通过对这些参数进行合理地调整,可以极大地提高数据库性能。但是这3种配置参数里面有几百个具体参数,本章只讲解那些对数据库性能影响最重的参数。本章主要讲解如下内容:●数据库配置参数●监控和调优实例配置参数●监控和调优DB配置参数●调整DB2注册变量●内存自动调整6.1数据库配置参数DBM配置、DB配置和DB2注册变量DB2有几百个配置参数。其中很多参数都是由DB2自动配置的,而其他一些参数则都有各自的默认值,这些默认值都被证明在大多数环境中能够发挥得很好。接下来,我们只描述那些常常需要另外进行配置的参数。第章60DB2数据库性能调整和优化202有些数据库管理器(即实例)配置参数可以在线更改(立即生效),而另一些参数则要求对实例实行重启后才能生效(即DB2STOP之后接着又是DB2START)。对于数据库配置参数也是一样,有些参数的更改可以立即生效,而另一些参数则要求先停止数据库,再重新激活数据库。每种配置参数的文档中都规定了参数是否可以在线配置。数据库管理器、数据库配置文件和DB2注册变量的基本管理命令如表6-1所示。表6-1数据库管理器、数据库配置文件和DB2注册变量的基本管理命令命令描述GETDBMCFG[SHOWDETAIL]列出数据库管理器配置文件中的当前值UPDATEDBMCFGUSINGconfig_paramvalue将指定的数据库管理器配置参数设置成指定的值GETDBCFGFORdb_name[SHOWDETAIL]列出某个特定数据库配置文件中的当前值UPDATEDBCFGFORdb_nameUSINGconfig_paramvalue将指定的数据库配置参数设置成指定的值db2set–lr列出DB2中的已经设置的所有注册变量db2setconfig_param=更改的值将指定的DB2注册变量设置成指定的值当您对一个配置参数作了更改后,就可以用下面的DB2CLP命令来查看该设置是否立即生效(在线):GETDBMCFGSHOWDETAIL或GETDBCFGFORdbnameSHOWDETAIL例如,在接下来的情况中,MAX_QUERYDEGREE和MAXTOTFILOP分别增加到了3和19000。如果参数是在线配置的,则DelayedValue跟CurrentValue应该是一样的。否则,就需要重新启动实例,或者重新激活数据库。例6-1ShowDetails实例。DatabaseManagerConfigurationNodetype=EnterpriseServerEditionwithlocalandremoteclientsDescriptionParameterCurrentValueDelayedValue----------------------------------------------------------------------Maximumquerydegreeofparallelism(MAX_QUERYDEGREE)=33Maximumtotaloffilesopen(MAXTOTFILOP)=1600019000在上面的例子中MAXTOTFILOP修改之后的值并未生效,这就需要重启实例,而第6章数据库配置参数调整203MAX_QUERYDEGREE修改之后的值已经生效了。6.2监控和调优实例(DBM)配置参数以下要讲的配置参数中,有些是从共享内存中分配空间的,所以应该记住操作系统内存的限制,您必须确保没有过度分配内存。如果过度分配内存,将会导致操作系统的内存不足而发生换页(paging),这对于性能来说后果将是灾难性的。6.2.1代理程序相关配置参数●MAXAGENTS参数表明在任何给定时间接受应用程序请求的数据库管理器代理程序的最大数目。MAXAGENTS的值应当至少是每个被并发地访问的数据库中的MAXAPPLS(并发应用程序最大数目,该参数指定可以连接(包括本地连接和远程连接)到一个数据库的并发的应用程序的最大数目。在绝对最小值情况下,将此参数设置为=(用户连接的数量))值的总和。如果数据库的数量大于NUMDB参数,那么最安全的方案就是使用NUMDB和MAXAPPLS最大值的乘积。每个额外的代理程序都需要一些资源开销,这些开销在启动数据库管理器时会分配给代理程序。在内存受限(memoryconstrained)的环境中,这个参数对于限制数据库管理器的总内存使用量很有用,因为每个附加的代理都需要附加的内存。●NUM_POOLAGENTS参数是用于判定您希望代理程序池增加到多大的准则。如果所创建的代理程序多于该参数值所指明的数目,那么当代理程序执行完自己当前的请求后将终止运行而不是返回给代理程序池。如果该参数的值为0,将按照需要创建代理程序,在代理程序执行完自己当前的请求后终止运行。要避免因在并发连接许多应用程序的OLTP环境中频繁创建和终止代理程序而产生的成本,请将NUM_POOLAGENTS的值增加到接近MAXAGENTS的值。●NUM_INITAGENTS参数决定空闲代理程序的初始数量,这些代理程序是在DB2START时在代理程序池中创建的。指定的初始代理程序数目要合适(尽管并非必要条件),这可以缩短“热身”时间。NUM_INITAGENTS指定在db2start上的代理池中创建的空闲代理的数量,它可以帮助加快在开始使用数据库时的连接。1.如何更改参数为了更改这些参数,请运行以下命令:db2-vupdatedbmcfgusingMAXAGENTSa_valuedb2-vupdatedbmcfgusingNUM_POOLAGENTSb_valueDB2数据库性能调整和优化204db2-vupdatedbmcfgusingNUM_INITAGENTSc_valuedb2-vterminate2.调优步骤在运行期间的任何时候,您都可以使用下面这个命令来获取数据库管理器的快照数据:db2-vgetsnapshotfordatabasemanager看一下下列输出行:Highwatermarkforagentsregistered=4Highwatermarkforagentswaitingforatoken=0Agentsregistered=4Agentswaitingforatoken=0Idleagents=0Agentsassignedfrompool=5Agentscreatedfromemptypool=4Agentsstolenfromanotherapplication=0Highwatermarkforcoordinatingagents=4Maxagentsoverflow=0Idleagents显示了在代理池中空闲代理的数量,而Agentsassignedfrompool则显示了从代理池中将一个代理分配出去的次数。Agentscreatedfromemptypool显示了在空池情况下必须创建的代理的数量,这可能会让人误解为刚好在db2start之后。而在db2start之后,它只是显示被创建的代理的数量。如果Agentscreatedfromemptypool/Agentsassignedfrompool的比例比较高(5:1或更大),则可能表明应该增加NUM_POOLAGENTS。这还可能表明系统的总体工作负载太高。此时可以通过降低MAXCAGENTS来调整工作负载。如果这个比例较低,则暗示着NUM_POOLAGENTS可能被设得太高,有些代理就会浪费系统资源。如果您发现“Agentswaitingforatoken”或“Agentsstolenfromanotherapplication”不等于0,则可能需要增加MAXAGENTS以允许数据库管理器可以使用更多的代理程序。如果Agentsstolenfromanotherapplication大于0,并且机器的内存资源是充足的,则可以增加MAXAGENTS。此外,Localconnections+Remoteconnectionstodbmanager将指出连接到实例上的并发连接的数量。Highwatermarkforagentsregistered将报告在某一次连接到数据库管理器的代理曾出现的最大数量。Maxagentsoverflow报告当已经达到MAXAGENTS时,所收到的创建一个新代理的请求的次数。最后,AgentsRegistered显示在被监控的数据库管理器实例中当前注册的代理的数量。第6章数据库配置参数调整2053.调优建议在大多数情况下,将MAXAGENTS和NUM_POOLAGENTS的值设置成略微大于并发应用程序连接的最大预计数目。让NUM_INITAGENTS保留为默认值会比较好。NUM_INITAGENTS和NUM_POOLAGENTS应该设置为预期的并发实例级连接的平均数量,对于OLAP这个值通常比较低,而对于OLTP就要高一些。对于存在大量rampup连接情况下的性能基准,将NUM_INITAGENTS设置成预期的连接数量(这将减少资源争用,从而显著地减少rampup连接所需的时间)。在使用了连接池的3层环境中,NUM_INITAGENTS和NUM_POOLAGENTS对性能的影响很小,因为即使在应用程序空闲的时候,应用服务器也会连续不断地维护连接。注意:在DB2V9.5中,数据库引擎由基于过程模式转变为基于线程模式,这将意味着整个数据库引擎都在一个地址空间下(任何代码段都可以访问任何全局变量)。DB29.5以后已经不需要对这些参数作出调整。DB2V9.5有一个新特性,就是MAX_CONNECTIONS和MAX_COORDAGENTS都可以被设置成AUTOMATIC。如果您认为系统可以承受所有的连接,同时又想限制被协调代理消耗的资源,则可以只将MAX_CONNECTIONS设定为AUTOMATIC,而将MAX_COORDAGENTS设定为一个数值。这样系统会认为可以连到实例的连接数是无限的。如果您对最大连接数和协调代理数都不想进行限制的话,则可以将它们都设定为AUTOMATIC。4.DB2V8、V9.1、V9.5版本间代理的差异性DB2在从V8到V9.5版本的演进过程中,代理特性有很多改变,表6-2中列举了一些典型的特性上的差异以供读者参考。表6-2DB2不同版本之间代理的差异性特性V8V9.1V9.5新代理-DB2taskdDB2stmmDB2taskdDB2stmm代理存在形式UNIX:进程Windows:线程UNIX:进程Windows:线程UNIX:线程Windows:线程SUBAGENT存在环境MPPSMPMPPSMPMPPSMPSERIALDB2数据库性能调整和优化206(续表)特性V8V9.1V9.5代理是否支持AUTOMATIC否否是是否支持参数MAXAGENTSMAXCAGENTSAGENTPRI是是否是否支持监控元素MAX_AGENT_OVERFOLOWS是是否MAX_CONNECTIONS默认值MAX_COORDAGENTSMAX_COORDAGENTSAUTOMATICNUM_POOLAGENTS默认值MAXAGENTS/2MAXAGENTS/2AUTOMATICMAX_COORDAGENTS最大值MAXAGENTSMAXAGENTS64000NUM_INITAGENTS最大值NUM_POOLAGENTSNUM_POOLAGENTS64000通过以上对DB2代理程序相关参数的介绍,希望读者能够对DB2的代理程序有一个清晰的了解。另外也希望读者能够了解DB2V9.5中的代理新特性,并能够利用这些新特性更好地优化数据库。6.2.2SHEAPTHRES这是实例中所有数据库的并发私有排序所消耗的内存总量,其他传入的
本文标题:51CTO下载-第6章
链接地址:https://www.777doc.com/doc-6148886 .html