《DB2性能管理与实战》——4.1 DB2性能相关参数
发布日期:2021-08-30 16:00:31 浏览次数:11 分类:技术文章

本文共 13889 字,大约阅读时间需要 46 分钟。

本节书摘来自异步社区出版社《DB2性能管理与实战》一书中的第4章,第4.1节,作者: IBM中国开发中心(CDL) 信息管理软件开发部,更多章节内容可以访问云栖社区“异步社区”公众号查看。

4.1 DB2性能相关参数

DB2性能管理与实战

本节讲述在DB2中应当注意的一些与性能相关的配置参数,包括注册表参数、数据库管理器参数和数据库参数。和内存相关的参数请参见第2章,这里不再赘述。

4.1.1 注册表参数

1.DB2_OVERRIDE_BPF
这个变量以页为单位指定在激活数据库、前滚恢复或崩溃恢复时要创建的缓冲池大小。当内存约束导致在激活数据库、前滚恢复或崩溃恢复期间出现故障时,此选项很有用。出现内存不足可能是因为实内存短缺(这种情况很少发生);或者因为数据库管理器试图在没有精确配置的缓冲池的情况下分配大的缓冲池。例如当数据库管理器连16页的最小缓冲池(系统隐藏缓冲池)都无法启动时,请尝试使用此环境变量来指定一个更小的页数。为这个变量提供的值将覆盖当前的缓冲池大小。

2.DB2_EVALUNCOMMITTED

当启用这个变量时,在可能的情况下,它将进行扫描以延迟或避免行锁定,直到数据满足谓词求值为止。当启用这个变量时,可对未落实的数据进行谓词求值。只有在“当前已落实”语义对避免锁定争用没有帮助时,DB2_EVALUNCOMMITTED才适用。如果设置了这个变量,并且“当前已落实”语义适用于扫描,那么将不会跳过已删除的行,并且不会对尚未落实的数据进行谓词求值;而是将处理行和数据的当前已落实版本。

并且DB2_EVALUNCOMMITTED只适用于使用“游标稳定性”或“读稳定性”隔离级别的语句。同时,执行表扫描访问时将无条件地跳过已删除的行,执行索引扫描时不会跳过已删除键,除非还设置了注册表变量DB2_SKIPDELETED。在执行db2start命令时激活DB2_EVALUNCOMMITTED注册表变量有效。有关延迟锁定是否合适的决定则是在语句编译或绑定时作出的。

3.DB2_SKIPDELETED

当启用了此注册表变量时,它允许使用“游标稳定性”或“读稳定性”隔离级别的语句(在索引访问期间)无条件地跳过已删除的键和(在表访问期间)跳过已删除的行。启用 DB2_EVALUNCOMMITTED 之后,将自动跳过已删除的行,但不会跳过索引中未落实的伪删除键,除非还启用了DB2_SKIPDELETED。

只有在“当前已落实”语义对避免锁定争用没有帮助时,DB2_SKIPDELETED才适用。如果设置了这个变量,并且“当前已落实”语义适用于扫描,那么将不会跳过已删除的行;而是处理它们的当前已落实版本。此注册表变量不会影响DB2目录表上的游标的行为。此注册表变量用db2start命令激活。

4.DB2_SKIPINSERTED

当启用了DB2_SKIPINSERTED注册表变量时,它允许使用“游标稳定性”或“读稳定性”隔离级别的语句跳过未落实的已插入行,就好像从未插入这些行一样。此注册表变量不会影响DB2目录表上的游标的行为。此注册表变量是在数据库启动时激活的,而跳过未落实的已插入行的决定是在语句编译时或构建时做出的。

如果正在使用“当前已落实”语义,那么此注册表变量没有任何作用。也就是说,即使将DB2_SKIPINSERTED设为OFF并启用“当前已落实”行为,也仍然会跳过未落实的已插入行。跳过已插入行的行为与具有暂挂转出清除的表不兼容。因此,扫描程序可能等待RID上的锁定,这样做只是为了发现该RID是否是已转出块的一部分。

5.DB2_USE_ALTERNATE_PAGE_CLEANING

这个变量指定DB2数据库是使用页清除算法的另一种方法还是使用页清除的缺省方法。当这个变量设为ON时,DB2系统会将更改的页写入磁盘,从而保持在LSN_GAP前面并且主动查找牺牲页。这样做允许页清除程序更好地利用可用的磁盘I/O带宽。当这个变量设为ON时,由于chngpgs_thresh数据库配置参数不控制页清除程序的活动,所以它不再相关。

6.DB2_SORT_AFTER_TQ

当接收端要求对数据排序并且接收节点数与发送节点数相等时,指定优化器如何在分区数据库环境中使用定向表队列。当DB2_SORT_AFTER_TQ=NO时,优化器往往会在发送端排序,而在接收端合并行。当DB2_SORT_AFTER_TQ=YES,优化器往往会发送未排序的行,在接收端不合并,而在接收完所有的行之后才在接收端对这些行进行排序。如果发出带有-immediate参数的db2set命令,那么对这个变量的更改会在所有将来已编译SQL语句执行后立即生效。不需要重新启动实例。

7.DB2_PARALLEL_IO

这个参数设定的值格式为:“TablespaceID:[n],…”已定义的表空间(由其数字表空间标识识别)的逗号分隔列表。如果表空间的预取大小设为AUTOMATIC,那么可以通过指定表空间标识,后面跟一个冒号,再加上每个容器的磁盘数n,向DB2数据库管理器指示该表空间中每个容器的磁盘数。如果未指定n,那么将使用默认值6。

可以将TablespaceID替换为星号()以指定所有表空间。例如,如果DB2_PARALLEL_IO =,那么所有表空间都将使用6作为每个容器的磁盘数。如果同时指定星号()和表空间标识,那么优先使用表空间标识设置。例如,如果DB2_PARALLEL_IO =,1:3,那么所有表空间都将使用6作为每个容器中的磁盘数,但第一个表空间除外(它使用3作为每个容器中的磁盘数)。

此注册表变量用来更改DB2计算表空间的I/O并行性的方式。当启用了I/O并行性时(要么通过使用多个容器来隐式启用,要么通过设置DB2_PARALLEL_IO来显式启用),通过发出正确数目的预取请求来实现此目标。每个预取请求都是对页的扩展数据块的请求。例如,表空间具有两个容器,而预取大小是扩展数据块大小的4倍。如果设置了此注册表变量,那么此表空间的预取请求将分为4个请求(每个请求对应一个扩展数据块),并且可能由4个预取程序来并行处理这些请求。

如果表空间中的各个容器分布在多个物理磁盘上,或者表空间中的容器是在由多个物理磁盘组成的单个RAID设备上创建的,那么可能想要设置注册表变量。如果未设置此注册表变量,那么任何表空间的并行度都是表空间的容器数。例如,如果DB2_PARALLEL_IO设为NULL并且表空间有4个容器,那么将发出4个按扩展数据块大小计算的预取请求;如果表空间有两个容器,并且预取大小是扩展数据块大小的4倍,那么此表空间的预取请求将分为两个请求(每个请求对应两个扩展数据块)。

如果设置了此注册表变量,并且表的预取大小不是AUTOMATIC,那么表空间的并行度为预取大小除以扩展数据块大小。例如,如果对预取大小为160而扩展数据块大小为32页的表空间设置了DB2_PARALLEL_IO,那么将发出5个按扩展数据块大小计算的预取请求。如果设置了此注册表变量,且表空间的预取大小是AUTOMATIC,那么DB2将自动计算表空间的预取大小。

8.DB2_WORKLOAD

如果要设置数据库缺省创建的表为列组织表,可以将这个参数设置为ANALYTICS,使用此设置(在创建数据库之前)以为分析性工作负载建立最佳默认配置。ANALYTICS选项用于确保配置参数按如下自动设置(除非禁用配置顾问程序)。

boll DFT_TABLE_ORG(用户表的缺省表组织)数据库配置参数设置为COLUMN。

boll DFT_DEGREE(缺省等级)数据库配置参数设置为ANY。

boll dft_extent_sz(缺省扩展数据块大小)数据库配置参数设置为4。

boll catalogcache_sz(目录高速缓存)数据库配置参数设置为比用于非分析性工作负载的值更大的值。

boll 未计算专门用于分析性工作负载的sortheap(排序堆)和sheapthres_shr(共享排序的排序堆阈值)数据库配置参数的值。这些设置考虑有关处理列组织数据的其他内存需求。

boll util_heap_sz(实用程序堆大小)数据库配置参数设置为一个值,该值会考虑将数据装入到列组织表所需的额外内存。

boll auto_reorg(自动重新组织)数据库配置参数设置为ON。

当DB2_WORKLOAD设置为ANALYTICS时,对现有数据库运行AUTOCONFIGURE命令具有相同效果。会自动进行下列额外选择。

boll 会将新创建的数据库的缺省数据库页面大小设置为32KB。

boll 会分配较大的数据库共享排序堆。

boll 会对任何从INTRA_PARALLEL(启用分区内并行性)参数继承分区内并行性设置的工作负载启用查询内并行性,即使INTRA_PARALLEL设置为NO也是如此。

boll 会对SYSDEFAULTMANAGEDSUBCLASS启用并行控制。

boll 缺省情况下,自动表维护会为列组织表执行空间回收。

当想在数据库中为IBM Content Manager配置一组注册表变量时设置为“CM”。

当想在数据库中为Cognos®Content Server配置一组注册表变量时设置为“COGNOS_CS”。

当想在数据库中为Filenet Content Manager配置一组注册表变量时设置为“FILENET_CM”。

当想在数据库中为Infor ERP Baan配置一组注册表变量时设置为“INFOR_ERP_LN”。

当想在数据库中为Maximo® 配置一组注册表变量时设置为“MAXIMO”。

当想在数据库中为Master Data Management配置一组注册表变量时设置为“MDM”。

当想在数据库中为SAP环境配置一组注册表变量时设置为“SAP”。设置了DB2_ WORKLOAD=SAP时,不会自动创建用户表空间SYSTOOLSPACE和用户临时表空间SYSTOOLSTMPSPACE。

9.DB2_CPU_BINDING

针对操作系统为Linux的情况,如果DB2成员和集群高速缓存设施(CF)在同一主机上需要设置这个参数,此注册表变量控制CPU分配。要使对这个变量的更改生效,需要重新启动DB2实例。

boll 对于成员,NUM_CORES=max(1, floor(0.8*totalCores))

boll 对于集群高速缓存设施,NUM_CORES=totalCores–针对成员的数目。

如果成员或CF在同一主机上,那么总可用核心数的大约80% 指定给DB2,余下部分指定给CF。值:0 < x <(主机上的物理核心数)。

可用如下两个参数。

(1)NUM_CORES。

boll 操作系统:Linux。

boll 缺省值:如果成员或CF在同一主机上,那么总可用核心数的大约80% 指定给DB2,余下部分指定给CF。值:0 < x <(主机上的物理核心数)。

boll 此选项指定分配给成员或CF进程的核心数。可使用NUM_CORES来配置DB2产品的次级容量许可。核心数可以是整数或分数,这允许在启用了同时多线程(SMT)的情况下添加一个或多个硬件线程。

(2)PROCESSOR_LIST。

boll 操作系统:Linux

boll 缺省值:未设置;值:任何处理器数。

boll 此选项指定DB2将绑定至的逻辑处理器数,这允许完全控制逻辑处理器(或核心)数以及它们将驻留的CPU包(或套接字)。如果尝试使用DB2_CPU_BINDING设置PROCESSOR_LIST和NUM_CORES,那么NUM_CORES会被忽略。

10.DB2_ANTIJOIN

如果这个变量设为YES,那么优化器会搜索将NOT EXISTS子查询变换为DB2可更有效地处理的反连接的机会。如果这个变量设为NO,那么优化器会限制将NOT EXISTS子查询变换为反连接的机会。如果这个变量设为EXTEND,那么优化器会搜索将NOT IN和NOT EXISTS子查询变换为反连接的机会。如果发出带有-immediate参数的db2set命令,那么对这个变量的更改会在所有将来已编译SQL语句执行后立即生效。不需要重新启动实例。

4.1.2 数据库管理器配置参数

1.RQRIOBLK -“客户机I/O块大小”配置参数

在数据服务器运行时,在客户机上打开分块游标时,这个参数指定块大小。用于分块游标的内存是在应用程序专用地址空间之外分配的,所以应确定要分配给每个应用程序的最佳专用内存量。如果数据服务器运行时客户机不能为分块游标分配应用程序的专用内存之外的空间,那么将打开非分块游标。

还应考虑这个参数对分块游标的数目和潜在大小的影响。如果所传送的行的数目或大小较大(例如,如果数据量大于4096个字节),那么大行块可能获得更佳性能。但是,由于较大的记录块会增大每个连接的工作集内存大小,所以要加以折衷。

大记录块还可能导致比应用程序实际需要的更多的访存请求。可通过在应用程序中的SELECT语句上使用OPTIMIZE FOR子句来控制访存请求数。

2.INSTANCE_MEMORY -“实例内存”配置参数

如果正在使用的DB2数据库产品具有内存使用量限制,或者将内存使用量设为特定值,那么这个参数指定可以为数据库分区分配的最大内存量。否则,AUTOMATIC设置将允许实例内存根据需要而增加。

参数INSTANCE_MEMORY的缺省值是AUTOMATIC。AUTOMATIC设置会促使在激活数据库分区时计算值。计算值介于系统上的物理RAM的75%~95%之间:系统越大,百分比越高。对于具有内存使用量限制的DB2数据库产品,计算值也会受产品许可证允许的最大值限制。对于具有多个逻辑数据库分区的数据库分区服务器,此计算值是除以逻辑数据库分区数而获得的值。

根据工作负载和配置不同,DB2内存消耗也将不同。除了此因素之外,如果启用了自调整DATABASE_MEMORY,那么它也是影响DB2内存消耗的一个因素。当DATABASE_MEMORY设置为AUTOMATIC,并且自调整内存管理器(STMM)处于活动状态时,会启用自调整DATABASE_MEMORY。

如果实例正在一个没有内存使用量限制的DB2数据库产品上运行,并且参数INSTANCE_MEMORY设置为AUTOMATIC,那么不会强制执行实例内存限制。数据库管理器将根据需要来分配系统内存。如果启用了自调整DATABASE_MEMORY,那么STMM将更新配置以获得最佳性能,同时还会监视可用系统内存。监视可用内存会确保不会过量使用系统内存。

如果实例正在一个具有内存使用量限制的DB2数据库产品上运行,或者INSTANCE_ MEMORY设置为特定值,那么会强制执行实例内存限制。数据库管理器分配的系统内存最多只能为此限制。当达到此限制时,应用程序会接收到内存分配错误。额外的注意事项如下所示。

boll 如果启用了自调整DATABASE_MEMORY,并且参数INSTANCE_MEMORY设置为特定值,那么STMM会更新配置以获得最佳性能,同时还会保持足够的可用实例内存。此行为会确保有足够的实例内存可用,以满足易失内存需求。它不会监视系统内存。

boll 如果启用了自调整DATABASE_MEMORY,并且参数INSTANCE_MEMORY设置为AUTOMATIC,那么对于具有内存使用量限制的DB2数据库产品,会强制执行INSTANCE_MEMORY参数限制。STMM会更新配置以获得最佳性能,同时还会监视可用系统内存并保持足够的可用实例内存。

使用db2pd -dbptnmem命令来显示有关实例内存使用量的详细信息。

3.INTRA_PARALLEL-“启用分区内并行性”配置参数

这个参数指定在缺省情况下数据库连接是否将使用分区内查询并行性。

boll 并行索引创建不使用此配置参数。

boll 如果更改这个参数值,那么可能将程序包重新绑定至数据库,并且可能会使性能有一定下降。

boll 可通过调用ADMIN_SET_INTRA_PARALLEL过程来覆盖应用程序中的INTRA_ PARALLEL设置。可通过在工作负载定义中设置MAXIMUM DEGREE属性在工作负载中覆盖INTRA_PARALLEL设置和ADMIN_SET_INTRA_PARALLEL过程在应用程序中设置的值。

4.MAX_CONNECTIONS -“最大客户机连接数”配置参数

这个参数指示每个成员允许的最大客户机连接数。设置-1表示将使用与MAX_ COORDAGENTS关联的值,而不使用自动设置或行为。AUTOMATIC意味着数据库管理器将使用最佳技术来选取这个参数的值。AUTOMATIC是配置文件中的一个ON/OFF开关,它与值无关,因此-1和AUTOMATIC都可以是缺省设置。

5.MAX_COORDAGENTS -“最大协调代理程序数”配置参数

这个参数用来限制协调代理程序数。当集中器关闭时(即,当MAX_CONNECTIONS等于或小于MAX_COORDAGENTS时),这个参数确定服务器节点上可同时存在的协调代理程序的最大数目。连接至数据库或连接至实例的每个本地或远程应用程序各获得一个协调代理程序。需要实例连接的请求包括CREATE DATABASE、DROP DATABASE和“数据库系统监视器”命令。

当集中器处于打开状态时(即,MAX_CONNECTIONS大于MAX_COORDAGENTS时),可能有比协调代理程序多的连接来为它们提供服务。仅当有协调代理程序在为应用程序提供服务时,应用程序才处于活动状态。否则,应用程序处于不活动状态。来自活动应用程序的请求将由数据库协调代理程序(以及SMP或MPP配置中的子代理程序)来提供服务。来自不活动的应用程序的请求将会进行排队,直到指定数据库协调代理程序来为该应用程序提供服务,此时,应用程序变成活动的。因此,这个参数可用来控制系统上的负载。

6.NUM_POOLAGENTS -“代理程序池大小”配置参数

这个参数设置空闲代理程序池的最大大小。此配置参数设为AUTOMATIC并且缺省值为100。设置 -1仍受支持,并且它会转换为值100。当这个参数设为AUTOMATIC时,数据库管理器将自动管理池中的空闲代理程序数。通常,这表示在代理程序完成其工作后,它不会终止,而是空闲一段时间。根据代理程序的工作负载和类型,它可以在某个时间段后终止。

使用AUTOMATIC时,仍可以指定 “NUM_POOLAGENTS”配置参数的值。当前合用的空闲代理程序数小于或等于指定的值时,始终会合用其他空闲代理程序。

4.1.3 数据库配置参数

1.LOGBUFSZ-“日志缓冲区大小”配置参数

在将日志记录写入磁盘之前,这个参数允许指定用作这些记录的缓冲区的数据库堆大小(由DBHEAP参数定义)。当发生下列一种情况时,会将日志记录写入磁盘:

boll 一个事务落实或一组事务落实,由MINCOMMIT配置参数定义;

boll 日志缓冲区已满;

boll 发生了其他某些内部数据库管理器事件。

这个参数也必须小于或等于DBHEAP参数。缓冲日志记录将使日志记录文件I/O更有效,因为将日志记录写入磁盘的频率越低,那么每次可写入的日志记录就越多。

建议:

如果在专用的日志磁盘上有大量的读取活动,或者频繁使用磁盘,那么要增大此缓冲区的大小。当增大这个参数的值时,也应考虑DBHEAP参数,因为该日志缓冲区使用由DBHEAP参数控制的空间。可以使用数据库系统监视器来确定日志缓冲区变满(这要求它先将数据写至磁盘,才能写入新日志记录)的频率。

2.CUR_COMMIT -“当前已落实”配置参数
这个参数控制游标稳定性(CS)扫描的行为。对于新数据库,缺省值设为ON。如果缺省值设为ON,那么查询将返回提交该查询时数据的当前已落实值。

从V9.5或之前版本升级数据库期间,CUR_COMMIT配置参数将设为DISABLED,以便保持前发行版的行为。如果要将“当前已落实”行为用于游标稳定性扫描,那么必须在升级后将CUR_COMMIT配置参数设为ON。可以显式地将CUR_COMMIT配置参数设为AVAILABLE。设置这个参数之后,必须显式地请求“当前已落实”行为才能查看当前已落实的结果。

使用游标稳定性隔离级别时,注册表变量DB2_EVALUNCOMMITTED、DB2_ SKIPDELETED和DB2_SKIPINSERTED受“当前已落实”行为影响。如果在BIND上或在语句准备期间显式地指定了USE CURRENTLY COMMITTED或WAIT FOR OUTCOME,那么这些注册表变量将加以忽略。如果使用“当前已落实”时数据库中存在大量的锁定冲突,那么性能注意事项可能适用。行的落实版本将从日志中检索且执行效果更好,并避免当日志记录仍在日志缓冲区时发生日志磁盘活动。因此,为提高检索先前已落实的数据时的性能,可能要考虑增加LOGBUFSZ参数的值。

3.DFT_DEGREE -“缺省级别”配置参数

这个参数指定CURRENT DEGREE专用寄存器和DEGREE绑定选项的缺省值。值为1意味着没有分区内并行性。值为 -1(或ANY)意味着优化器根据处理器数目和查询类型确定分区内并行度。

编译语句时使用CURRENT DEGREE专用寄存器或DEGREE绑定选项指定SQL语句的分区内并行度,使用SET RUNTIME DEGREE命令指定活动应用程序的最大运行时分区内并行度,使用“最大查询并行度”(MAX_QUERYDEGREE)配置参数指定对于所有SQL查询的最大查询分区内并行度。

实际使用的运行时并行度是下列值中最小的一个:

boll MAX_QUERYDEGREE配置参数;

boll 应用程序运行时并行度;

boll SQL语句编译并行度。

4.NUM_FREQVALUES -“保留的高频值数目”配置参数

这个参数允许指定在RUNSTATS命令中指定WITH DISTRIBUTION选项时收集的“最高频值”的数目。增大这个参数的值将会增加在收集统计信息时所使用的统计信息堆(STAT_HEAP_SZ)的数量。“最高频值”统计信息帮助优化器了解列中数据值的分布。较高的值可使查询优化器得到更多信息,但是需要额外的目录空间。当指定0时,即使请求收集分布统计信息,也不保留任何高频值统计信息。

还可以使用NUM_FREQVALUES命令参数在表或列级别指定作为RUNSTATS命令的一部分收集的高频值的数目。如果未指定任何值,那么将使用NUM_FREQVALUES配置参数值。通过RUNSTATS命令更改保留的高频值数目比通过使用NUM_FREQVALUES数据库配置参数进行更改容易。对于非均匀分布数据上的一些谓词(=、< 或 >),更新这个参数能帮助优化器获得更好的选择性估算。选择性计算越精确,选择的存取方案(访问计划)就越有效。在更改这个参数的值之后,需要:

boll 再次运行RUNSTATS命令,以收集有关已更改的高频值数目的统计信息;

boll 重新绑定任何包含静态SQL或XQuery语句的程序包。

使用RUNSTATS时,可在表级别和列级别限制收集的高频值的数目。这允许通过减少列的分布统计信息来优化目录中占用的空间,在此空间中不能使用这些目录,而这些目录仍然使用关键列的信息。为了更新这个参数,应确定通常具有选择谓词的最重要列(在最重要的表中)中的非均匀度。使用提供每个值在一列中出现次数的有序排序的SQL SELECT语句就可实现这一点。不应考虑均匀分布的、唯一的、长的或LOB列。这个参数合理的实际值范围为10~100。

注意:

收集高频值统计信息的过程需要大量的CPU和内存(STAT_HEAP_SZ)资源。

5.NUM_QUANTILES -“列的分位数”配置参数
这个参数控制在RUNSTATS命令中指定WITH DISTRIBUTION选项时将收集的分位数的数目。增大这个参数的值将会增加在收集统计信息时所使用的统计信息堆(STAT_HEAP_SZ)的数量。

“分位数”统计信息帮助优化器了解列中数据值的分布。较高的值可使查询优化器得到更多信息,但是需要额外的目录空间。如果指定0或1,那么不保留分位数统计信息,即使请求收集分布统计信息。

还可以使用NUM_QUANTILES命令参数在表或列级别指定作为RUNSTATS命令的一部分收集的分位数的数目。如果未指定任何值,那么将使用NUM_QUANTILES配置参数值。通过RUNSTATS命令更改将要收集的分位数的数目比通过使用NUM_QUANTILES数据库配置参数进行更改容易。

对于非均匀分布数据上的范围谓词,更新这个参数能帮助获得更好的选择性估算。在其他优化器决策中,此信息对于选择索引扫描还是选择表扫描具有很大的影响(访问频繁出现的值的范围时使用表扫描更为有效,而对不频繁出现的值的范围则使用索引扫描更为有效)。

在更改这个参数的值之后,需要:

boll 再次运行RUNSTATS命令,以收集有关已更改的高频值数目的统计信息;

boll 重新绑定任何包含静态SQL或XQuery语句的程序包。

使用RUNSTATS时,可在表级别和列级别限制收集的分位数的数目。这允许通过减少列的分布统计信息来优化目录中占用的空间,在此空间中不能使用这些目录,而这些目录仍然使用关键列的信息。

建议:

在大多数情况下,这个参数的缺省值提供合理的准确估算。如果观察到下列两者之间存在重大和一致的差别,那么可考虑增加此值:

boll 从说明输出的选择性估算;

boll 非统一分布式列数据的范围谓词的实际选择性。

这个参数合理的实际值范围为10~50。

6.NUM_IOCLEANERS -“异步页清除程序的数目”配置参数
这个参数允许指定数据库的异步页清除程序数。在数据库代理程序需要缓冲池的空间之前,这些页清除程序将更改的页从缓冲池写入磁盘。因此,数据库代理程序应该不必等待写出已更改的页,它们也能使用缓冲池中的空间。这提高了数据库应用程序的整体性能。页清除程序还将减少从软故障(例如,断电)恢复的时间,因为磁盘上数据库的内容在任何给定的时间都是最新的。

如果将这个参数设为AUTOMATIC,那么启动的页清除程序数取决于当前机器上配置的物理CPU核心数,以及分区数据库环境中的本地逻辑数据库分区数。当这个参数设为AUTOMATIC时,始终至少启动一个页清除程序。当这个参数设为AUTOMATIC时,要启动的页清除程序数将使用以下公式计算:

number of page cleaners = max( ceil( # CPUs / # local logical DPs )- 1, 1 )

此公式确保在逻辑数据库分区之间均匀地分布页清除程序数,并且页清除程序数不多于物理CPU核心数。在HP-UX平台上,必须在计算中使用逻辑CPU数而不是物理CPU核心数。

当设置这个参数的值时,可以考虑下列因素。

boll 工作负载

具有较高更新事务比率的环境可能需要配置更多页清除程序,这仅在DB2USE ALTERNATE_PAGE_CLEANING设为OFF(这也是缺省值)时适用。

boll 缓冲池大小

含有大缓冲池的环境可能也需要配置更多的页清除程序,这仅在DB2USE_ALTERNATE PAGE_CLEANING设为OFF(这也是缺省值)时适用。

可以使用数据库系统监视器来帮助调整此配置参数,该数据库系统监视器使用事件监视器收集的有关缓冲池写入活动的信息。

boll 如果同时满足下面两个条件,那么可以减小该参数:

pool_data_writes大约等于pool_async_data_writes;

pool_index_writes大约等于pool_async_index_writes。

建议不要降低至通过AUTOMATIC计算出的较低值。

boll 如果下列任何一种情况为真,那么应增大该参数:

pool_data_writes比pool_async_data_writes大很多;

pool_index_writes比pool_async_index_writes大很多。

7.NUM_IOSERVERS -“I/O服务器数”配置参数

这个参数指定用于数据库的I/O服务器的数目。无论任何时候,对一个数据库执行的预取和实用程序的I/O数都不能超过此数目。

用I/O服务器(又称为“预取程序”)代表数据库代理程序从而通过实用程序(例如,backup实用程序和restore实用程序)执行预取I/O和异步I/O。I/O服务器在执行它所启动的I/O操作期间等待。非预取I/O直接由数据库代理程序调度,因此,它不受NUM_IOSERVERS约束。如果这个参数设置为AUTOMATIC,那么启动的预取程序数将基于当前数据库分区中表空间的并行性设置。并行性设置由DB2_PARALLEL_IO系统环境变量控制。要启动的预取程序数是在激活数据库时根据以下公式计算的:

number of prefetchers =max( max( max over all table spaces( parallelism setting ),number of cores * number of SMT threads ), 3 )

为了最大限度地利用系统中的所有I/O设备,理想的值通常是比该数据库所在的物理设备的数目多1或2个。最好配置额外的I/O服务器,因为每个I/O服务器都有关联的一些额外处理时间,而且任何未使用的I/O服务器都将保持为空闲。

8.SOFTMAX-“恢复范围和软检查点时间间隔”配置参数(适用于DB2V10.5之前)

这个参数确定软检查点的频率和恢复范围,这将有助于完成崩溃恢复过程。

这个参数的作用如下所示。

boll 影响在一次崩溃(如电源故障)之后需要恢复的日志文件数。例如,如果使用缺省值100,那么数据库管理器将尝试把需要恢复的日志文件数保持为1。如果指定300作为这个参数的值,那么数据库管理器将尝试把需要恢复的日志文件数保持为3。

要影响进行崩溃恢复所需要的日志文件数,数据库管理器使用这个参数来触发页清除程序,以确保比指定的恢复窗口旧的页都已写入磁盘。

boll 确定软检查点的频率。这是将信息写至日志控制文件的过程。此信息用于确定日志中的起点,以防需要重新启动数据库。

当由于事件(例如,电源故障)造成数据库故障时,可能会对该数据库作下列更改:

boll 尚未落实,但更新了缓冲池中的数据;

boll 已落实,但尚未从缓冲池写入磁盘;

boll 已落实并从缓冲池写入磁盘。

当重新启动某个数据库时,将使用日志文件来执行该数据库的崩溃恢复,这确保该数据库处于一致状态(即,所有已落实的事务都应用于该数据库,而所有未落实的事务都不应用于该数据库)。

9.OPT_DIRECT_WRKLD -“优化定向工作负载”配置参数(适用于DB2 V10.5FP2)

此数据库配置参数启用或禁用显式分层锁定(EHL)。它影响整个DB2 pureScale实例。

OPT_DIRECT_WRKLD参数指定表或范围分区是否有资格进入NOT_SHARED状态。它全局适用于所有DB2 pureScale成员。这个参数仅受包含在DB2 pureScale环境中的实例支持。

这个参数不需要优化概要文件支持。

使用说明如下。

boll 如果OPT_DIRECT_WRKLD参数设置为使用AUTOMATIC,那么当CF_GBP_SZ和CF_LOCK_SZ也设置为AUTOMATIC时会启用EHL。

boll 样本用法:

db2 update db cfg for < dbname > OPT_DIRECT_WRKLD YES

boll 如果在数据库处于联机状态时,这个参数的值从ON更改为OFF,那么表无法更改为NOT_SHARED状态。任何已处于NOT_SHARED状态的表都会保持处于此状态,直到另一成员访问该表。

10.DFT_TABLE_ORG - 缺省表组织( 适用于DB2 V10.5)

对CREATE TABLE语句未指定以下两个子句时,这个参数指定是将用户表创建为列组织表还是创建为行组织表:ORGANIZE BY COLUMN和ORGANIZE BY ROW。

COLUMN

指定常规用户表创建为列组织表,除非对CREATE TABLE语句指定了ORGANIZE BY ROW子句。

ROW

指定常规用户表创建为行组织表,除非对CREATE TABLE语句指定了ORGANIZE BY COLUMN子句。除非通过在创建数据库之前将DB2_WORKLOAD注册表变量设置为ANALYTICS来自动将缺省表组织设置为COLUMN,否则ROW选项是缺省设置;如果表只能创建为行组织表(即,具体化查询表、范围集群表、多维集群表、插入时集群表、全局临时表或类型表),那么会忽略缺省设置COLUMN。

如果将DB2_WORKLOAD注册表变量设置为ANALYTICS,并且如果未禁用AUTOCON FIGURE选项,那么对于DFT_TABLE_ORG配置参数,新创建的数据库或使用配置顾问程序配置的数据库将使用值COLUMN。请注意,在缺省情况下,将自动配置新创建的数据库,除非DB2_ENABLE_AUTOCONFIG_DEFAULT注册表变量设置为NO,或在CREATE DATABASE命令上指定了AUTOCONFIGURE APPLY NONE子句。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

转载地址:https://blog.csdn.net/weixin_34038652/article/details/90561367 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:《Lua游戏AI开发指南》一第1章 从构建沙箱开始
下一篇:《Python高手之路(第3版)》——1.4 编码风格与自动检查

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月14日 20时54分02秒