DB2 V9.7 for Linux, UNIX, and Windows

性能变量

DB2_ALLOCATION_SIZE
  • 操作系统:所有操作系统
  • 缺省值:128 KB,范围:64 KB - 256 MB
  • 指定缓冲池的内存分配大小。

    为此注册表变量设置较高的值可能具有下列优点:将需要更少的分配以达到缓冲池的期望内存量。

    为此注册表变量设置较高的值可能会增加成本,这是因为如果缓冲池的更改量不是分配大小的倍数,那么会浪费内存。例如,如果 DB2_ALLOCATION_SIZE 的值为 8 MB,而缓冲池减少了 4 MB,那么由于不能释放整个 8 MB 段,所以这 4 MB 将会浪费。

注: 不推荐使用 DB2_ALLOCATION_SIZE,在以后的发行版中可能会将其除去。
DB2_APM_PERFORMANCE
  • 操作系统:所有操作系统
  • 缺省值:OFF,值:ONOFF
  • 将此变量设置为 ON 来启用存取方案管理器 (APM) 中与性能相关的更改,这些更改将影响查询高速缓存(程序包高速缓存)的行为。通常建议不要对生产系统使用这些设置。它们会引入一些限制,例如,可能会出现包外高速缓存错误和/或增加内存使用量。

    DB2_APM_PERFORMANCE 设置为 ON 也会启用无包锁定方式。此方式允许全局查询高速缓存运行,而不必使用包锁定,这些锁定是内部系统锁定,可以保护高速缓存的包条目不会被除去。NO PACKAGE LOCK 方式可能会使性能有较小的提高,但它不允许执行某些数据库操作。这些被禁止的操作可能包括:使包无效的操作、使包不起作用的操作、PRECOMPILEBINDREBIND

DB2ASSUMEUPDATE
  • 操作系统:所有操作系统
  • 缺省值:OFF,值:ONOFF
  • 当启用此变量时,它允许 DB2® 数据库系统假定正在更改 UPDATE 语句中提供的所有固定长度列。这使得 DB2 数据库系统无需将现有列值与新值进行比较就可以确定实际上是否正在进行更改。当为更新提供了一些列(例如,在 SET 子句中)但是实际上没有进行修改时,使用此注册表变量会导致更多日志记录和索引维护。

    在执行 db2start 命令时激活 DB2ASSUMEUPDATE 注册表变量有效。

DB2_ASYNC_IO_MAXFILOP
  • 操作系统:所有操作系统
  • 缺省值:maxfilop 配置参数的值,值:从 maxfilop 的值到 max_int 的值
  • 不推荐使用 DB2_ASYNC_IO_MAXFILOP,在以后的发行版中可能会将其除去。由于线程数据库管理器所维护的共享文件句柄表而使此变量已过时。有关更多信息,请参阅共享文件句柄表

    在 V9.7 中仍然可以设置 DB2_ASYNC_IO_MAXFILOP,但是它将不起作用。如果您想限制可对每个数据库打开的文件句柄数,请参阅 maxfilop 配置参数。

DB2_AVOID_PREFETCH
  • 操作系统:所有操作系统
  • 缺省值:OFF,值:ONOFF
  • 指定在崩溃恢复期间是否应使用预取。如果 DB2_AVOID_PREFETCH =ON,那么不使用预取。
DB2_BACKUP_USE_DIO
  • 操作系统:所有操作系统
  • 缺省值:OFF,值:ONOFF
  • 指定操作系统是否对备份映像进行高速缓存。缺省行为是对该映像文件进行高速缓存。如果 DB2_BACKUP_USE_DIO 设置为 ON,那么备份映像文件直接写至磁盘(绕过文件高速缓存)。

    将此变量设置为 ON 可能会让操作系统更好地利用内存资源,因为对备份映像文件进行高速缓存没有任何好处。对于 Linux 平台,此性能影响带来的好处最大。但是,备份本身的速度可能会稍微减慢,所以应在 DB2_BACKUP_USE_DIO 设置为 ON 时测量备份性能的变化。
    注: 更改此注册表变量的值不会影响已在运行的备份操作的行为。对该值的更改将在下一次运行备份时生效,并且不需要实例重新启动。
DB2BPVARS
  • 操作系统:对每个参数指定的操作系统
  • 缺省值:路径
  • 两组参数可用于调整缓冲池。一组参数(仅在 Windows 上可用)指定缓冲池应对特定类型的容器使用散射读。另一组参数(在所有平台上都可用)影响预取行为。
    以格式 parameter=value 在 ASCII 码文件中指定参数,每行一个参数。例如,名为 bpvars.vars 的文件可能包含下列行:
      
          NO_NT_SCATTER = 1
          NUMPREFETCHQUEUES = 2
    	   
    假定 bpvars.vars 存储在 F:\vars\ 中,要设置这些变量,请发出以下命令:
       db2set DB2BPVARS=F:\vars\bpvars.vars

    散射读参数

    对于针对相应类型的容器有大量顺序预取的系统以及您已将 DB2NTNOCACHE 设置为 ON 的系统,建议使用这些散射读参数。这些参数仅在 Windows 平台上可用,它们是 NT_SCATTER_DMSFILENT_SCATTER_DMSDEVICENT_SCATTER_SMS。指定 NO_NT_SCATTER 参数以显式地禁止对任何容器进行散射读。特定参数用于对所指示类型的所有容器打开散射读。对于这些参数中的每个参数,缺省值为(或 OFF);且可能的值包括:(或 OFF)和 1(或 ON)。

    注: 仅当 DB2NTNOCACHE 设置为 ON 来关闭 Windows 文件高速缓存时,才可以打开散射读。如果 DB2NTNOCACHE 设置为 OFF 或者未设置,那么当您试图对任何容器打开散射读时,会向管理通知记录中写入一条警告消息,且仍然禁用散射读。

    预取调整参数

    预取调整参数是 NUMPREFETCHQUEUESPREFETCHQUEUESIZE。这些参数在所有平台上都可用,且可用于改进缓冲池数据预取。例如,请考虑期望的 PREFETCHSIZE 划分为 PREFETCHSIZE/EXTENTSIZE 预取请求的顺序预取。在这种情况下,请求会放置在预取队列中,将从该队列分派 I/O 服务器来执行异步 I/O。缺省情况下,DB2 数据库管理器为每个数据库分区维护一个大小为 max(200,2*NUM_IOSERVERS ) 的队列。在某些环境中,随着队列和/或不同大小的队列的增加,性能会得到提高。预取队列的数目应该最多为 I/O 服务器数目的一半。设置这些参数时,请考虑其他参数(例如,PREFETCHSIZEEXTENTSIZENUM_IOSERVERS 和缓冲池大小)以及工作负载特征(例如,当前用户数)。

    如果认为缺省值对于您的环境太小,首先稍稍增大该值。例如,您可以设置 NUMPREFETCHQUEUES=4PREFETCHQUEUESIZE=200。以受控方式对这些参数进行更改,以便可以监视和评估这些更改的效果。

    对于 NUMPREFETCHQUEUES,缺省值为 1,该值的范围是 1NUM_IOSERVERS。如果将 NUMPREFETCHQUEUES 设置为小于 1,那么它将调整为 1。如果将它设置为大于 NUM_IOSERVERS,那么它将调整为 NUM_IOSERVERS

    对于 PREFETCHQUEUESIZE,缺省值为 max(200,2*NUM_IOSERVERS)。值的范围是 132767。如果将 PREFETCHQUEUESIZE 设置为小于 1,那么它将调整为缺省值。如果设置为大于 32767,那么它将调整为 32767

注: 不推荐使用 DB2BPVARS,在以后的发行版中可能会将其除去。
DB2CHKPTR
  • 操作系统:所有操作系统
  • 缺省值:OFF,值:ONOFF
  • 指定是否需要对输入进行指针检查。
DB2CHKSQLDA
  • 操作系统:所有操作系统
  • 缺省值:ON,值:ONOFF
  • 指定是否需要对输入进行 SQLDA 检查。
DB2_EVALUNCOMMITTED
  • 操作系统:所有操作系统
  • 缺省值:NO,值:YESNO
  • 当启用此变量时,在可能的情况下,它将进行扫描以延迟或避免行锁定,直到知道数据满足谓词求值为止。当启用此变量时,可对未落实的数据进行谓词求值。

    只有在“当前已落实”语义对避免锁定争用没有帮助时,DB2_EVALUNCOMMITTED 才适用。如果设置了此变量,并且“当前已落实”语义适用于扫描,那么将不会跳过已删除的行,并且不会对尚未落实的数据进行谓词求值;而是,将处理行和数据的当前已落实版本。

    并且,DB2_EVALUNCOMMITTED 只适用于使用“游标稳定性”或“读稳定性”隔离级别的语句。并且,执行表扫描访问时将无条件地跳过已删除的行,除非还设置了注册表变量 DB2_SKIPDELETED,否则不会跳过已删除的键。

    在执行 db2start 命令时激活 DB2_EVALUNCOMMITTED 注册表变量有效。有关延迟锁定是否合适的决定则是在语句编译或绑定时作出的。

DB2_EXTENDED_IO_FEATURES
  • 操作系统:AIX®
  • 缺省值:OFF,值:ONOFF
  • 将此变量设置为 ON 可启用增强 I/O 性能的功能。此增强功能包括提高内存高速缓存的命中率和减少高优先级 I/O 的等待时间。这些功能仅可用于特定的软硬件配置组合;对于其他配置来说,将此变量设置为 ON 将被 DB2 数据库管理系统或操作系统忽略。最低配置要求为:
    • 数据库版本:DB2 V9.1
    • 必须使用原始设备作为数据库容器(文件系统上的容器不受支持)
    • 操作系统:AIX 5.3 TL4
    • 存储子系统:Shark DS8000® 支持所有增强的 I/O 性能特征。请参阅 Shark DS8000 文档以了解设置和先决条件信息。

    HIGH、MEDIUM 和 LOW 的缺省 I/O 优先级设置分别为 3812;可以使用 DB2_IO_PRIORITY_SETTING 注册表变量来更改这些设置。

DB2_EXTENDED_OPTIMIZATION
  • 操作系统:所有操作系统
  • 缺省值:OFF,值:ONOFFENHANCED_MULTIPLE_DISTINCTIXORSNHD
  • 此变量指定查询优化器是否使用优化扩充功能来提高查询性能。ONENHANCED_MULTIPLE_DISTINCTSNHD 值指定不同的优化扩充功能。如果要将这些值组合使用,请使用用逗号分隔的列表。

    如果查询中的一个单选操作涉及多个不同的聚集操作并且处理器数与数据库分区数的比率很低(例如,比率小于或等于 1),那么可以使用 ENHANCED_MULTIPLE_DISTINCT 值来提高这种查询的性能。在不包含对称多处理器(SMP)的分区数据库环境中,应该使用此设置。

    IXOR 选项(从 DB2 V9.7 FP2 发行版开始提供此选项)指定优化器将使用索引 OR 运算数据访问方法。

    如果指定了 SNHD 值,那么优化器根据成本确定一个更加有效的单一分区、散列引导分区策略。在此方法下,无法真正以并行方式执行的操作将更加积极地被优化为在单个数据库分区(而非协调程序分区)上执行操作。

    这些优化扩充功能并不能在所有环境中提高查询性能。您应执行测试,以确定各个查询的性能提高情况。

DB2_HASH_JOIN
  • 操作系统:所有操作系统
  • 缺省值:YES,值:YESNO
  • 在编译存取方案时,指定散列连接作为可能的连接方法。必须调整 DB2_HASH_JOIN 才能获得最佳性能。如果能够避免散列循环以及溢出到磁盘,那么散列连接的性能最佳。要调整散列连接性能,估计对 sheapthres 配置参数可用的最大内存量,然后调整 sortheap 配置参数。增大它的值,直到尽可能避免散列循环和磁盘溢出,但不要达到由 sheapthres 配置参数指定的限制。
    注: 建议不要使用 DB2_HASH_JOIN,将来的发行版可能会将其除去。
DB2_IO_PRIORITY_SETTING
  • 操作系统:AIX
  • 值:HIGH:#、MEDIUM:# 和 LOW:#,其中 # 可以在 1 至 15 之间
  • 此变量和 DB2_EXTENDED_IO_FEATURES 注册表变量一起使用。此注册表变量提供了一种方式来覆盖 DB2 数据库系统的缺省 HIGHMEDIUMLOW I/O 优先级设置,该缺省设置分别为 3812。必须在启动实例之前设置此注册表变量;对此变量进行任何修改都需要重新启动实例。
    注: 单独设置此注册表变量并不会启用增强的 I/O 功能,还必须设置 DB2_EXTENDED_IO_FEATURES 才能启用这些功能。DB2_EXTENDED_IO_FEATURES 的所有系统要求同样适用于此注册表变量。
DB2_KEEP_AS_AND_DMS_ CONTAINERS_OPEN
  • 操作系统:所有操作系统
  • 缺省值:NO,值:YESNO
  • 如果将此变量设置为 ON,那么每个 DMS 表空间容器都将打开一个文件句柄,直到数据库被取消激活为止。因为免除了打开容器时所需进行的处理,所以查询性能可能会提高。仅应在纯 DMS 环境中使用此注册表,否则针对 SMS 表空间的查询的性能可能会受到负面影响。
DB2_KEEPTABLELOCK
  • 操作系统:所有操作系统
  • 缺省值:OFF,值:ONTRANSACTIONOFFCONNECTION
  • 如果将此变量设置为 ONTRANSACTION,那么此变量允许 DB2 数据库系统在“未落实的读”或“游标稳定性”隔离级别处于关闭状态期间维护表锁定。事务结束时将释放所保留的表锁定,就像为“读稳定性”和“可重复读”扫描释放表锁定一样。

    如果将此变量设置为 CONNECTION,那么将为应用程序释放一个表锁定,直到该应用程序回滚事务或者连接被重置为止。在落实之间,表锁定将继续挂起,删除表锁定的应用程序请求将被数据库忽略。表锁定仍然被分配给该应用程序。因此,当应用程序重新请求表锁定时,锁定已经处于可用状态。

    对于可利用此优化的应用程序工作负载,性能应该会有所提高。然而,并行运行的其他应用程序的工作负载可能会受到影响。其他应用程序可能无法访问给定表,从而使得并行性过低。DB2 SQL 目录表不受此设置影响。CONNECTION 设置还具有上面描述的 ONTRANSACTION 设置所具有的行为。

    在进行语句编译或绑定时将检查此注册表变量。

DB2_LARGE_PAGE_MEM
  • 操作系统:AIX、Linux 和 Windows Server 2003
  • 缺省值:NULL值:*(表示所有应该使用大页内存的适用内存区域)或者应该使用大页内存的特定内存区域的列表(各个内存区域之间以逗号分隔)。可用区域根据操作系统有所变化。在 AIX 上,可以指定下列区域:DBDBMSFCMAPPLPRIVATE。在 Linux 上,可以指定以下区域:DB。在 Windows Server 2003 上,可以指定以下区域:DB。巨页内存仅在 AIX 上可用。
  • DB2_LARGE_PAGE_MEM 注册表变量用来启用大页支持或者巨页支持。设置 DB2_LARGE_PAGE_MEM=DB 将对数据库共享内存区域启用大页内存;如果 database_memory 设置为 AUTOMATIC,那么将禁止 STMM 对此共享内存区域进行自动调整。在 AIX 上,设置 DB2_LARGE_PAGE_MEM=DB:16GB 将对数据库共享内存区域启用巨页内存。

    使用大量虚拟内存的密集内存访问型应用程序可以通过使用大页或巨页来提高性能。要使 DB2 数据库系统可以使用大页或巨页,必须先将操作系统配置为使用大页或巨页。

    要对 64 位 DB2 AIX 版上的代理程序专用内存启用大页(DB2_LARGE_PAGE_MEM=PRIVATE 设置),必须在操作系统中配置大页,并且实例所有者必须具有 CAP_BYPASS_RAC_VMM 和 CAP_PROPAGATE 能力。

    在 AIX 5L™ 上,可以将此变量设置为 FCM。FCM 内存位于它自己的内存集中,因此必须将 FCM 关键字添加至 DB2_LARGE_PAGE_MEM 注册表变量的值,以便对 FCM 内存启用大页。

    在 Linux 上,还要求 libcap.so.1 库可用。必须先安装此库才能使此选项起作用。如果此选项已打开,且该库不在系统上,那么 DB2 数据库会禁用大内核页并继续如常运作。

    在 Linux 上,要验证大内核页是否可用,请发出以下命令:

       cat /proc/meminfo

    如果大内核页可用,那么应该显示下面三行(服务器上配置的内存量不同,显示的数字也会不同):

       HugePages_Total:   200
          HugePages_Free:    200
          Hugepagesize:    16384 kB

    如果没有看到这几行,或者 HugePages_Total 为 0,那么必须配置操作系统或内核。

    在 Windows 上,系统上可用的大页内存量小于总可用内存。系统运行一段时间之后,内存就会被分段,大页内存量就会减少。DB2_ALLOCATION_SIZE 注册表变量应设置为较高值(例如,256MB),以便在 Windows 上分配大内存页时实现一致的性能。(请注意,DB2_ALLOCATION_SIZE 需要您停止然后重新启动该实例。)

DB2_LOGGER_NON_ BUFFERED_IO
  • 操作系统:所有操作系统
  • 缺省值:AUTOMATIC,值:AUTOMATICONOFF
  • 此变量允许您控制是否对日志文件系统执行直接 I/O (DIO) 操作。如果 DB2_LOGGER_NON_BUFFERED_IO 设置为 AUTOMATIC,那么将通过 DIO 来打开活动日志窗口(即,主日志文件),并且将对所有其他记录器文件进行缓存。如果它设置为 ON,那么将通过 DIO 来打开所有日志文件句柄。如果它设置为 OFF,那么将对所有日志文件句柄进行缓存。
DB2MAXFSCRSEARCH
  • 操作系统:所有操作系统
  • 缺省值:5,值:-1 以及 133554
  • 指定在将记录添加至表中时,要搜索的可用空间控制记录 (FSCR) 的数量。缺省情况是搜索 5 个 FSCR。修改此值允许您平衡插入速度与空间复用。使用较大的值将优化空间复用。使用较小的值将优化插入速度。将值设置为 -1 会强制数据库管理器搜索所有 FSCR。
DB2_MAX_INACT_STMTS
  • 操作系统:所有操作系统
  • 缺省值:未设置,值:最大为 4000000000
  • 此变量覆盖对任何一个应用程序保留的不活动语句数的缺省限制。可以选择另一个值,以便增大或减小用于不活动语句信息的系统监视器堆大小。缺省限制为 250

    如果应用程序在一个工作单元中包含数目极多的语句,或者如果有许多应用程序正在同时运行,那么可能会耗尽系统监视器堆。

DB2_MAX_NON_TABLE_LOCKS
  • 操作系统:所有操作系统
  • 缺省值:YES,值:请参阅描述
  • 此变量定义在事务释放所有 NON 表锁定之前该事务可具有的 NON 表锁定的最大数目。NON 表锁定是这样一些表锁定:即使事务已使用完它们,它们仍保留在散列表和事务链中。因为事务经常多次访问同一个表,所以保留锁定并将它们的状态更改为 NON 可以提高性能。
    为了获得最佳结果,此变量的建议值是想要任何连接访问的表的最大数目。如果未指定用户定义的值,那么缺省值如下所示:如果 locklist 大小大于或等于
     SQLP_THRESHOLD_VAL_OF_LRG_LOCKLIST_SZ_FOR_MAX_NON_LOCKS 
    (当前为 8000),缺省值是
    SQLP_DEFAULT_MAX_NON_TABLE_LOCKS_LARGE
    (当前为 150)。否则,缺省值为
    SQLP_DEFAULT_MAX_NON_TABLE_LOCKS_SMALL
    (当前为 0)。
DB2_MDC_ROLLOUT
  • 操作系统:所有操作系统
  • 缺省值:IMMEDIATE,值:IMMEDIATEOFFDEFER
  • 此变量对 MDC 表的删除操作启用称为“转出”的性能增强功能。当在搜索式 DELETE 语句中删除整个单元格(维值的交叉点)时,转出是删除 MDC 表中的行的较快方法。好处是减少了记录工作而处理效率更高。
    变量设置有三种可能的结果:
    • 不转出 - 在指定了 OFF
    • 立即转出 - 在指定了 IMMEDIATE
    • 转出但延迟清除索引 - 在指定了 DEFER

    如果在启动后更改了值,那么对语句进行的任何新编译都将沿用新的注册表值设置。对于程序包高速缓存中的语句,在重新编译语句之前,不会在删除处理中进行任何更改。SET CURRENT MDC ROLLOUT MODE 语句将在应用程序连接级别覆盖 DB2_MDC_ROLLOUT 的值。

    在 DB2 V9.7 及更高版本的发行版中,不支持将 DEFER 值用于具有分区 RID 索引的数据分区 MDC 表。仅支持 OFF 和 IMMEDIATE 值。如果 DB2_MDC_ROLLOUT 注册表变量设置为 DEFER,或者 CURRENT MDC ROLLOUT MODE 专用寄存器设置为 DEFERRED 以覆盖 DB2_MDC_ROLLOUT 设置,那么清除转出类型将为 IMMEDIATE。 如果 MDC 表仅存在非分区 RID 索引,那么支持执行延迟索引清除转出。

DB2MEMDISCLAIM
  • 操作系统:所有操作系统
  • 缺省值:YES;值:YESNO
  • DB2 数据库系统进程使用的内存可能有一些关联的调页空间。即使在已经释放关联的内存后,也会保留该调页空间。这些条件取决于操作系统的(可调)虚拟内存管理资源分配策略。DB2MEMDISCLAIM 注册表变量控制 DB2 代理程序是否显式请求操作系统从释放的内存中解除关联保留的调页空间。

    DB2MEMDISCLAIM 设置为 YES 会导致较少的调页空间需求,并且可能导致较少的页面调度磁盘活动。DB2MEMDISCLAIM 设置为 NO 将会导致较多的调页空间需求,并且可能导致更多的页面调度磁盘活动。在某些情况下,例如,如果调页空间很大,并且实内存很大从不会发生页面调度,那么设置为 NO 会提供较小的性能提高。

DB2MEMMAXFREE
  • 操作系统:所有操作系统
  • 缺省值:NULL,值:02³²-1 字节
  • 指定未使用的专用内存的最大字节数,在将未使用的内存返回给操作系统之前这些内存由 DB2 数据库系统进程保留。

    如果未设置 DB2MEMMAXFREE,那么在将内存释放回操作系统之前,DB2 数据库系统进程将保留多达 20% 的未使用专用内存(根据当前消耗的专用内存量)。

注: 建议您不要使用 DB2MEMMAXFREE,在以后的发行版中会将其除去。由于数据库管理器现在使用线程引擎模型,所以不再需要此变量。不要设置此变量。设置它可能会降低性能,并且可能导致意外行为。
DB2_MEM_TUNING_RANGE
  • 操作系统:所有操作系统
  • 缺省值:NULL,值:一系列百分比 n, m,其中 n=minfree,而 m=maxfree
  • DB2 实例保留可用的物理内存量十分重要,这是因为此数量指示了同一机器上运行的其他应用程序能够使用的内存量。当启用了数据库共享内存自调整功能时,给定实例保留可用的物理内存量取决于该实例(及其活动数据库)的内存需求。当一个实例紧急需要更多内存时,它将分配内存,直到系统上的可用物理内存量达到 minfree 指定的百分比为止。当该实例不需要那么多内存时,它将维护较大的可用物理内存量,此数量由 maxfree 以百分比形式指定。因此,要求对 minfree 设置的值必须小于 maxfree 值。

    如果未设置此变量,那么 DB2 数据库管理器就会根据服务器上的内存量计算 minfreemaxfree 的值。除非正在运行自调整内存管理器 (STMM) 并将 database_memory 设置为 AUTOMATIC,否则此变量的设置不起作用。

DB2_MMAP_READ
  • 操作系统:AIX
  • 缺省值:OFF,值:ONOFF
  • 此变量与 DB2_MMAP_WRITE 一起使用,以允许 DB2 数据库系统使用 mmap 作为 I/O 的替代方法。

    当这些变量设置为 ON 时,读入至 DB2 缓冲池以及从这些缓冲池中写出的数据将绕过 AIX 内存高速缓存并使用内存映射 I/O。如果 DB2 缓冲池相对较小,并且您无法增大或选择不增大此缓冲池的大小,那么应该通过将 DB2_MMAP_READDB2_MMAP_WRITE 设置为 OFF 来利用 AIX 内存高速缓存。

DB2_MMAP_WRITE
  • 操作系统:AIX
  • 缺省值:OFF,值:ONOFF
  • 此变量与 DB2_MMAP_READ 一起使用,以允许 DB2 数据库系统使用 mmap 作为 I/O 的替代方法。

    当这些变量设置为 ON 时,读入至 DB2 缓冲池以及从这些缓冲池中写出的数据将绕过 AIX 内存高速缓存并使用内存映射 I/O。如果 DB2 缓冲池相对较小,并且您无法增大或选择不增大此缓冲池的大小,那么应该通过将 DB2_MMAP_READDB2_MMAP_WRITE 设置为 OFF 来利用 AIX 内存高速缓存。

DB2_NO_FORK_CHECK
  • 操作系统:UNIX
  • 缺省值:OFF,值:ONOFF
  • 当启用此注册表变量时,DB2 运行时客户机将使确定当前过程是否是派生调用的结果而进行的检查次数最少。这样可以提高不使用 fork() API 的 DB2 应用程序的性能。
DB2NTMEMSIZE
  • 操作系统:Windows
  • 缺省值:(随内存段变化)
  • Windows 要求在 DLL 初始化时保留所有共享内存段,以保证在不同的进程之间的地址匹配。DB2NTMEMSIZE 允许用户在必要时覆盖 Windows 上的 DB2 缺省值。在大多数情况下,缺省值应足够使用。内存段、缺省大小和替换选项为:
    1. 并行 FCM 缓冲区:缺省大小为 512 MB(在 32 位平台上)或 4.5 GB(在 64 位平台上);替换选项为 FCM:<字节数>
    2. 受防护方式的通信:缺省大小为 80 MB(在 32 位平台上)或 512 MB(在 64 位平台上);替换选项为 APLD:<字节数>
    3. 消息查询内存:缺省大小为 4 MB(在 32 位和 64 位平台上);覆盖选项是 QUE:<number of bytes>。
    通过用分号 (;) 来隔开替换选项,可替换多个段。例如,在 32 位版本的 DB2 上,要将 FCM 缓冲区设为 1 GB 并将受防护的存储过程限制为 256 MB,请使用:
    db2set DB2NTMEMSIZE=FCM:1073741824;APLD:268435456
    要将消息队列内存增加到 64 MB,请使用:
    db2set DB2NTMEMSIZE=QUE:67108864
DB2NTNOCACHE
  • 操作系统:Windows
  • 缺省值:OFF,值:ONOFF
  • DB2NTNOCACHE 注册表变量指定 DB2 数据库系统是否使用 NOCACHE 选项打开数据库文件。如果 DB2NTNOCACHE=ON,那么不会执行文件系统高速缓存。如果 DB2NTNOCACHE=OFF,那么操作系统将高速缓存 DB2 文件。这适用于除包含长字段或 LOB 的文件以外的所有数据。消除系统高速缓存使数据库有更多内存可用,这样可以增加缓冲池或排序堆。

    在 Windows 中,在打开文件时对文件进行高速缓存,这是缺省行为。为文件中的每 1 GB 从系统池保留 1 MB。使用此注册表变量来覆盖高速缓存的无正式文件的 192 MB 限制。当达到该高速缓存限制时,给出资源不够错误。

注: 通过使用 CREATE TABLESPACE 和 ALTER TABLESPACE SQL 语句,可以对表空间容器获得相同好处。
DB2NTPRICLASS
  • 操作系统:Windows
  • 缺省值:NULL,值:RH(任何其他值)
  • 设置 DB2 实例(程序 DB2SYSCS.EXE)的优先级类别。有三种优先级类别:
    • NORMAL_PRIORITY_CLASS(缺省值优先级类别)
    • REALTIME_PRIORITY_CLASS(使用 R 来设置)
    • HIGH_PRIORITY_CLASS(使用 H 来设置)

    此变量与使用 DB2PRIORITIES 设置的各个线程优先级一起使用,以确定此系统中 DB2 线程相对于其他线程的绝对优先级。

    注: 建议不要使用 DB2NTPRICLASS,该参数只应在服务建议中使用。使用 DB2 服务类来调整代理程序优先级和预取优先级。使用此变量时应当小心。误用可能会对整个系统的性能有负面影响。

    有关更多信息,请参阅 Win32 文档中的 SetPriorityClass() API。

DB2NTWORKSET
  • 操作系统:Windows
  • 缺省值:1,1
  • 用于修改 DB2 数据库管理器可用的最小和最大工作集大小。缺省值情况下,当 Windows 未处于页面调度情况时,进程的工作集可按需要增大。但是,当发生页面调度时,进程可拥有的最大工作集大约是 1 MB。DB2NTWORKSET 允许您重设此缺省行为。

    使用 DB2NTWORKSET=min, max 语法来指定 DB2NTWORKSET,其中 minmax 以兆字节表示。

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

    还可以使用 <entry>[;<entry>...](其中 <entry>=<buffer pool ID>,<number of pages>)来临时更改所有缓冲池或部分缓冲池的大小,以便它们可以启动。

DB2_PINNED_BP
  • 操作系统:AIX、HP-UX 和 Linux
  • 缺省值:NO,值:YESNO
  • 将此变量设置为 YES 将致使 DB2 请求操作系统锁定 DB2 的数据库共享内存。将 DB2 配置为锁定数据库共享内存之后,应注意确保系统不会被过度使用,这是因为操作系统在管理内存方面的灵活程度将下降。

    在 Linux 上,除了要求修改此注册表变量以外,还需要 libcap.so.1 库。

    如果将此变量设为 YES,那么将无法启用数据库共享内存自调整功能(通过将 database_memory 配置参数设为 AUTOMATIC 来激活此功能)。

    对于 AIX 操作系统,要使用具有中等页大小支持(这是缺省行为)的数据库内存锁定,通过以具有 root 用户权限的用户登录并发出以下命令来确保实例所有者具有 CAP_BYPASS_RAC_VMM 和 CAP_PROPAGATE 能力:
    chuser capabilities=CAP_BYPASS_RAC_VMM,CAP_PROPAGATE <instance_owner_user_id>

    对于 64 位环境中的 HP-UX,除了修改此注册表变量外,还必须对 DB2 实例组授予 MLOCK 特权。为此,具有 root 用户访问权限的用户要执行以下操作:

    1. 将 DB2 实例添加至 /etc/privgroup 文件中。例如,如果 DB2 实例组属于 db2iadm1 组,那么必须将下面这一行添加到 /etc/privgroup 文件中:
            db2iadm1 MLOCK
    2. 发出以下命令:
            setprivgrp -f /etc/privgroup
DB2PRIORITIES
  • 操作系统:所有操作系统
  • 值的设置是与平台相关
  • 控制 DB2 进程和线程的优先级。
注: 建议不要使用 DB2PRIORITIES,该参数只应在服务建议中使用。使用 DB2 服务类来调整代理程序优先级和预取优先级。
DB2_RCT_FEATURES
  • 操作系统:所有操作系统
  • 缺省值:NULL。值:GROUPUPDATE=[ON|OFF]GROUPUPDATE 的缺省值为 OFF。
  • 当仅在前导“键序列”列及其子集上指定了等于谓词时,此变量允许对搜索式 UPDATE 语句(它以范围集群表中的多行作为目标)进行经过优化和简化的更新处理。由于对于页面上的所有行只更新单个日志记录,而不是对于每一行都要更新日志记录,因此也简化了日志记录。
    用法:
    db2set DB2_RCT_FEATURES=GROUPUPDATE=ON

    注意:一旦启用了此注册表变量,就不可能逆向迁移到较低版本的修订包。此外,当使用 DATA CAPTURE CHANGES 的 UPDATE 语句的目标表、触发器和可变长度列具有任何辅助索引,或者更新修改任何主键列或外键列时,将不会执行组更新。

DB2_RESOURCE_POLICY
  • 操作系统:AIX 5 或更高版本、所有 Linux(32 位 zSeries® 除外)以及 Windows Server 2003 或更高版本
  • 缺省值:未设置,值:指向配置文件的有效路径
  • 定义如下资源策略:可以使用该策略来限制 DB2 数据库使用的操作系统资源,或者该策略包含用于将特定操作系统资源指定给特定 DB2 数据库对象的规则。例如,在 AIX、Linux 或 Windows 操作系统上,可使用此注册表变量来限制 DB2 数据库系统使用的一组处理器。资源控制的范围根据操作系统的不同而变化。

    在启用了 AIX NUMA 和 Linux NUMA 的机器上,可以定义指定 DB2 数据库系统使用的资源集的策略。使用资源集绑定时,将每个单独的 DB2 进程与特定资源集绑定。这对于一些性能调整方案很有用。

    可以设置该注册表变量来指示指向这样一个配置文件的路径:该配置文件定义用于将 DB2 进程与操作系统资源的策略绑定。资源策略使您可以指定一组操作系统资源来限制 DB2 数据库系统。每个 DB2 进程都与该资源集中的单个资源绑定。资源分配以循环方式进行。

    样本配置文件:

    示例 1:将所有 DB2 进程与 CPU 1 或 3 绑定。

    <RESOURCE_POLICY>  	
    	<GLOBAL_RESOURCE_POLICY>  
    			<METHOD>CPU</METHOD>
    		<RESOURCE_BINDING> 
    		<RESOURCE>1</RESOURCE>	
    		</RESOURCE_BINDING>
    		<RESOURCE_BINDING>
    				<RESOURCE>3</RESOURCE>
    		</RESOURCE_BINDING>
    	</GLOBAL_RESOURCE_POLICY>
    	</RESOURCE_POLICY> 

    示例 2:(仅适用于 AIX)将 DB2 进程与下列其中一个资源集绑定:sys/node.03.00000、sys/node.03.00001、sys/node.03.00002 或 sys/node.03.00003

    <RESOURCE_POLICY>
    	<GLOBAL_RESOURCE_POLICY> 
    			<METHOD>RSET</METHOD>
    		<RESOURCE_BINDING> 
    				<RESOURCE>sys/node.03.00000</RESOURCE>
    		</RESOURCE_BINDING> 
    		<RESOURCE_BINDING> 
    				<RESOURCE>sys/node.03.00001</RESOURCE>
    		</RESOURCE_BINDING> 
    		<RESOURCE_BINDING> 
    				<RESOURCE>sys/node.03.00002</RESOURCE>
    		</RESOURCE_BINDING> 
    		<RESOURCE_BINDING> 
    				<RESOURCE>sys/node.03.00003</RESOURCE>
    		</RESOURCE_BINDING> 
    	</GLOBAL_RESOURCE_POLICY> 
    </RESOURCE_POLICY>
    注: (仅适用于 AIX)使用 RSET 方法要求具有 CAP_NUMA_ATTACH 功能。

    示例 3:(仅适用于 Linux)将与 SAMPLE 数据库相关联的缓冲池标识 2 和 3 的所有内存与 NUMA 节点 3 绑定。并且,将数据库内存总量的 80% 用于与 NUMA 节点 3 绑定,并保留 20% 的内存量分布在所有节点中作为并非特定于缓冲池的内存。

    <RESOURCE_POLICY>
    	<DATABASE_RESOURCE_POLICY>
    			<DBNAME>sample</DBNAME>
    			<METHOD>NODEMASK</METHOD>
    		<RESOURCE_BINDING>
    				<RESOURCE>3</RESOURCE>
    				<DBMEM_PERCENTAGE>80</DBMEM_PERCENTAGE>
    			<BUFFERPOOL_BINDING>
    <BUFFERPOOL_ID>2</BUFFERPOOL_ID>
    <BUFFERPOOL_ID>3</BUFFERPOOL_ID>
    			</BUFFERPOOL_BINDING>
    		</RESOURCE_BINDING>
    	</DATABASE_RESOURCE_POLICY>
    </RESOURCE_POLICY>

    示例 4:(仅适用于 Linux 和 Windows)定义两个分别由 CPU 掩码 0x0F 和 0xF0 指定的不同处理器集。将 DB2 进程和缓冲池标识 2 与处理器集 0x0F 绑定,并将 DB2 进程和缓冲池标识 3 与处理器集 0xF0 绑定。对于每个处理器集,将数据库内存总量的 50% 用于绑定。

    当期望建立处理器与 NUMA 节点之间的映射时,此资源策略很有用。下面是这种情况的一个示例:一个系统中有 8 个处理器和 2 个 NUMA 节点,其中处理器 0 到 3 属于 NUMA 节点 0,而处理器 4 到 7 属于 NUMA 节点 1。此资源策略允许在进行处理器绑定的同时隐式维护内存的局部性(CPU 方法和 NODEMASK 方法混合使用)。

    <RESOURCE_POLICY>
    	<DATABASE_RESOURCE_POLICY>
    			<DBNAME>sample</DBNAME>
    <METHOD>CPUMASK</METHOD>
    		<RESOURCE_BINDING>
    			<RESOURCE>0x0F</RESOURCE>
    <DBMEM_PERCENTAGE>50</DBMEM_PERCENTAGE>
    			<BUFFERPOOL_BINDING>
    <BUFFERPOOL_ID>2</BUFFERPOOL_ID>
    			</BUFFERPOOL_BINDING>
    		</RESOURCE_BINDING>
    		<RESOURCE_BINDING>
    			<RESOURCE>0xF0</RESOURCE>
    <DBMEM_PERCENTAGE>50</DBMEM_PERCENTAGE>
    			<BUFFERPOOL_BINDING>
    <BUFFERPOOL_ID>3</BUFFERPOOL_ID>
    			</BUFFERPOOL_BINDING>
    		</RESOURCE_BINDING>
    	</DATABASE_RESOURCE_POLICY>
    </RESOURCE_POLICY>
    DB2_RESOURCE_POLICY 注册表变量指定的配置文件接受 SCHEDULING_POLICY 元素。在某些平台上,可以使用 SCHEDULING_POLICY 元素来选择
    • DB2 服务器使用的操作系统调度策略

      可以使用 DB2NTPRICLASS 注册表变量来为 AIX 上的 DB2 和 Windows 上的 DB2 设置操作系统调度策略。

    • 各个 DB2 服务器代理程序使用的操作系统优先级

    此外,可以使用注册表变量 DB2PRIORITIESDB2NTPRICLASS 来控制操作系统调度策略和设置 DB2 代理程序优先级。但是,如果在资源策略配置文件中指定 SCHEDULING_POLICY 元素,就可以在单一位置指定调度策略和相关代理程序优先级。

    示例 1:选择 AIX SCHED_FIFO 调度策略,并提高 DB2 日志写程序和阅读器进程的优先级。

    <RESOURCE_POLICY>
    	<SCHEDULING_POLICY>
    		<POLICY_TYPE>SCHED_FIFO</POLICY_TYPE>
    		<PRIORITY_VALUE>60</PRIORITY_VALUE>
    
    		<EDU_PRIORITY>
    				<EDU_NAME>db2loggr</EDU_NAME>
    				<PRIORITY_VALUE>56</PRIORITY_VALUE>
    		</EDU_PRIORITY>
    
    		<EDU_PRIORITY>
    				<EDU_NAME>db2loggw</EDU_NAME>
    				<PRIORITY_VALUE>56</PRIORITY_VALUE>
    		</EDU_PRIORITY>
    	</SCHEDULING_POLICY>
    </RESOURCE_POLICY>

    示例 2:在 Windows 上替换 DB2NTPRICLASS=H。

    <RESOURCE_POLICY>
    	<SCHEDULING_POLICY>
    			<POLICY_TYPE>HIGH_PRIORITY_CLASS</POLICY_TYPE>
    	</SCHEDULING_POLICY>
    </RESOURCE_POLICY>
DB2_SELUDI_COMM_BUFFER
  • 操作系统:所有操作系统
  • 缺省值:OFF,值:ONOFF
  • 此变量在通过 UPDATE、INSERT 或 DELETE(UDI)查询中的 SELECT 来处理分块游标时使用。当启用此注册表变量时,它会阻止将查询结果存储在临时表中。但是,在对 UDI 查询的 SELECT 的分块游标执行 OPEN 处理期间,DB2 数据库系统会尝试将查询的整个结果直接缓存到通信缓冲区内存区域中。

    如果通信缓冲区空间不足以容纳查询的整个结果,那么将返回 SQLCODE -906 错误并回滚事务。请分别查看 aslheapszrqrioblk 数据库管理器配置参数以了解有关调整本地应用程序和远程应用程序的通信缓冲区内存区域大小的信息。

    如果启用了分区内并行性,那么此注册表变量不受支持。

DB2_SET_MAX_CONTAINER_SIZE
  • 操作系统:所有操作系统
  • 缺省值:未设置,值:-1 或任何大于 65 536 的正整数(以字节为单位)
  • 此注册表变量允许您限制启用了 AutoResize 功能的自动存储器表空间的各个容器大小。

    如果该值设置为 -1,那么对容器大小没有限制。

    注: 尽管您可以使用字节、千字节或兆字节单位来指定 DB2_SET_MAX_CONTAINER_SIZE,但是 db2set 将以字节为单位来指示它的值。
DB2_SKIPDELETED
  • 操作系统:所有操作系统
  • 缺省值:OFF,值:ONOFF
  • 当启用了此注册表变量时,它允许使用“游标稳定性”或“读稳定性”隔离级别的语句(在索引访问期间)无条件地跳过已删除的键和(在表访问期间)跳过已删除的行。启用 DB2_EVALUNCOMMITTED 之后,将自动跳过已删除的行,但除非还启用了 DB2_SKIPDELETED,否则不会跳过索引中 未落实的伪删除键。

    只有在“当前已落实”语义对避免锁定争用没有帮助时,DB2_SKIPDELETED 才适用。如果设置了此变量,并且“当前已落实”语义适用于扫描,那么将不会跳过已删除的行;而是,将处理它们的当前已落实版本。

    此注册表变量不会影响 DB2 目录表上的游标的行为。

    此注册表变量用 db2start 命令激活。

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

    如果正在使用“当前已落实”语义,那么此注册表变量没有任何作用。也就是说,即使将 DB2_SKIPINSERTED 设置为 OFF 并启用“当前已落实”行为,也仍然会跳过未落实的已插入行。

    注: 跳过已插入行的行为与具有暂挂转出清除的表不兼容。因此,扫描程序可能等待 RID 上的锁定,这样做只是为了发现该 RID 是否是已转出块的一部分。
DB2_SMS_TRUNC_TMPTABLE_THRESH
  • 操作系统:所有操作系统
  • 缺省值 =-2,值:-2-10n,其中 n = SMS 表空间容器中针对每个临时表要维护的扩展数据块的数目
  • 此变量指定表示将在 SMS 表空间中维护的临时表的文件的最小文件大小阈值。

    DB2 V9.7 FP2 开始,此变量的缺省设置为 -2,这意味着对于其大小小于或等于 1 个扩展数据块 * 容器数的任何溢出的 SMS 临时对象,将没有任何不需要的文件系统访问。超过此大小的临时对象会被截断为 0 个扩展数据块。

    当此变量设置为 0 时(在 DB2 V9.7 FP2 之前,这是缺省设置),不会执行特殊阈值处理。但是,一旦不再需要临时表,该文件就会被截断为 0 个扩展数据块。当此变量的值大于 0 时,将维护更大的文件。超过此阈值的对象将被截断为阈值大小。这样可减少每次使用临时表时删除并重新创建文件所造成的一部分系统开销。

    如果此变量设置为 -1,那么不会截断该文件,并且允许它无限增长,只不过会受到系统资源的限制。

DB2_SORT_AFTER_TQ
  • 操作系统:所有操作系统
  • 缺省值:NO,值:YESNO
  • 指定当接收端要求对数据排序并且接收节点数与发送节点数相等时,优化器如何在分区数据库环境中使用定向表队列。

    DB2_SORT_AFTER_TQ=NO 时,优化器往往会在发送端排序,而在接收端合并行。

    DB2_SORT_AFTER_TQ=YES,优化器往往会发送未排序的行,在接收端不合并,而在接收完所有的行之后才在接收端对这些行进行排序。

DB2_SQLWORKSPACE_CACHE
  • 操作系统:所有操作系统
  • 缺省值:30,值:10 到 2000
  • 此变量允许您控制在 SQL 工作空间中对先前使用的段进行高速缓存的数量。

    SQL 工作空间包含执行 SQL 时的分配(以段的形式)。正在为应用程序执行的每个 SQL 语句(静态或动态)都必须在 SQL 工作空间中保留该语句的执行期间所使用的段的唯一副本。在完成该语句的执行后,该段将成为不活动段,并且可以释放与不活动段相关联的内存分配,也可以继续在 SQL 工作空间中高速缓存这些内存分配。当从任何连接再次执行相同 SQL 语句时,将在 SQL 工作空间中查找上次执行该语句时保留的段的高速缓存副本,从而节省与分配和初始化该段的新副本相关联的成本。因此,SQL 工作空间将同时包含活动段(对应于当前执行的 SQL)和当前未在执行的已高速缓存的段。

    此注册表变量的值指定允许在 SQL 工作空间中高速缓存的内存分配的百分比。此高速缓存将表示为活动段的内存分配的百分比。例如,值 50 表示 SQL 工作空间包含所有活动段(当前在执行的段)以及最多 50% 的先前执行了高速缓存的段(可以复用这些段)。应该根据您希望 SQL 工作空间中可供复用的多少来调整 DB2_SQLWORKSPACE_CACHE 的设置。例如,增加此变量的大小可以在一定程度上提高 OLTP 工作负载的性能。在另一方面,较高的设置也意味着将增加应用程序共享堆的大小。注意,如果未将 appl_memory 数据库配置参数设置为 AUTOMATIC,那么 SQL 工作空间的大小还会受 appl_memory 的限制,因此 SQL 工作空间可能并不会提供 DB2_SQLWORKSPACE_CACHE 设置所允许的高速缓存量;在这样的情况下,您可能需要考虑增大 appl_memory(或将其设置为 AUTOMATIC)。此注册表变量不是动态的

DB2_TRUSTED_BINDIN
  • 操作系统:所有操作系统
  • 缺省值:OFF,值:OFFON 或者 CHECK
  • 当启用了 DB2_TRUSTED_BINDIN 时,会加速执行不受防护的嵌入式存储过程中包含主变量的查询语句。

    当启用了此变量时,在绑定不受防护的嵌入式存储过程中包含的 SQL 和 XQuery 语句期间,不会将外部 SQLDA 格式转换为内部 DB2 格式。这将加速处理嵌入式 SQL 和 XQuery 语句。

    当启用了此变量时,不受防护的嵌入式存储过程中不支持下列数据类型:

    • SQL_TYP_DATE
    • SQL_TYP_TIME
    • SQL_TYP_STAMP
    • SQL_TYP_CGSTR
    • SQL_TYP_BLOB
    • SQL_TYP_CLOB
    • SQL_TYP_DBCLOB
    • SQL_TYP_CSTR
    • SQL_TYP_LSTR
    • SQL_TYP_BLOB_LOCATOR
    • SQL_TYP_CLOB_LOCATOR
    • SQL_TYP_DCLOB_LOCATOR
    • SQL_TYP_BLOB_FILE
    • SQL_TYP_CLOB_FILE
    • SQL_TYP_DCLOB_FILE
    • SQL_TYP_BLOB_FILE_OBSOLETE
    • SQL_TYP_CLOB_FILE_OBSOLETE
    • SQL_TYP_DCLOB_FILE_OBSOLETE

    如果遇到了这些数据类型,那么会返回 SQLCODE -804 和 SQLSTATE 07002。

    注: 输入主变量的数据类型和长度必须与相应元素的内部数据类型和长度精确匹配。对于主变量,将始终满足此要求。但是,对于参数标记,必须注意确保使用相匹配的数据类型。可以使用 CHECK 选项来确保所有输入主变量的数据类型和长度都匹配,但是此选项将不利于性能提高。
    注: 建议不要使用 DB2_TRUSTED_BINDIN,在以后的发行版中会将其除去。
DB2_USE_ALTERNATE_PAGE_CLEANING
  • 操作系统:所有操作系统
  • 缺省值:未设置,值:ONOFF
  • 此变量指定 DB2 数据库使用页清除算法的另一种方法还是使用页清除的缺省方法。当此变量设为 ON 时,DB2 系统会将更改的页写入磁盘,从而保持在 LSN_GAP 前面并且主动查找牺牲页。这样做允许页清除程序更好地利用可用的磁盘 I/O 带宽。当此变量设置为 ON 时,由于 chngpgs_thresh 数据库配置参数不控制页清除程序的活动,所以它不再相关。
DB2_USE_FAST_PREALLOCATION
  • 操作系统:使用 VeritasVxFS、JFS2、GPFS™ 或 ext4(仅适用于 Linux)文件系统的 AIX、Linux 和 Solaris。
  • 缺省值:ON(对于 Veritas VxFS、JFS2 和 GPFS),值:ONOFF
  • 允许快速预分配文件系统功能部件保留表空间,并可以提高创建或改变大型表空间的过程以及数据库恢复操作的速度。实现此速度改善所增加的成本较低,也就是增加了在运行时期间插入行时分配实际空间所产生的成本。

    要禁用快速预分配,请将 DB2_USE_FAST_PREALLOCATION 设为 OFF。这可能会提高运行时性能;但是,在某些操作系统上(尤其是 AIX),当在同一表空间中执行大量插入和选择操作时,创建表空间的速度就会降低,并且数据库恢复时间将延长。对此设置进行的任何更改仅适用于表空间文件大小的新增部分或新文件。如果要禁用快速预分配并避免残留先前进行增加或添加时预分配的空间,需要复原该表空间。

DB2_USE_IOCP
  • 操作系统:AIX 5.3 TL9 SP2、AIX 6.1 TL2 或 AIX 7.1 或更高版本。
  • 缺省值:ON,值:OFFON
  • 在启用此注册表变量之前,请配置 IOCP

    通过使用此变量,就可以在提交和收集异步 I/O (AIO) 请求时使用 AIX I/O 完成端口 (IOCP)。此功能用来提高非一致性内存访问 (NUMA) 环境中的性能,这是因为它可以避免进行远程内存访问。