发行说明


|10.5 DB2 注册表和环境变量

|10.5.1 对性能变量的更正


|

|表 5. 性能变量

变量名 操作系统
描述
DB2_BINSORT 所有 缺省值 = NO

值:YES 或 NO

启用一种新的排序算法来减少排序的 CPU 时间和经过时间。这种新算法将 DB2 UDB 的特别有效的整数排序技术扩展到所有排序数据类型,例如 BIGINT、CHAR、VARCHAR、FLOAT、DECIMAL 以及这些数据类型的组合。要启用此新算法,使用以下命令:

db2set DB2_BINSORT = yes
DB2_BLOCK_BASED_BP Solaris 操作环境 缺省值 = 无

值:取决于参数

指定在缓冲池内创建块区域所需要的值。缓冲池的标识是必需的,并且可以在 SYSCAT.BUFFERPOOLS 系统目录视图的 BUFFERPOOLID 列中看到。必须给定缓冲池中要分配给基于块的 I/O 的页数。要包括在块中的页数是可选的,缺省值为 32。

使用此注册表变量的格式为:

DB2_BLOCK_BASED_BP=BUFFER POOL ID,BLOCK AREA SIZE,[BLOCK SIZE];...

通过使用同一变量(并用分号来隔开各个条目),可以将多个缓冲池定义为是基于块的。

BLOCK SIZE 可以是 2 到 256 范围内的值。如果没有给定 BLOCK SIZE,则将使用缺省值 32。

如果指定的 BLOCK AREA SIZE 大于总缓冲池大小的 98%,则缓冲池将不是基于块的。最好是始终让缓冲池的某些部分处于缓冲池的基于页的区域中,这是因为即使系统上大多数 I/O 都是顺序预取装的,但仍然可能需要个别页面。如果为 BLOCK AREA SIZE 指定的值不是 BLOCK SIZE 的倍数,则它将降低至最接近的块大小边界。有关基于块的 I/O 的更多信息,参见 10.2.1, 基于块的缓冲池

DB2_NO_FORK_CHECK UNIX 缺省值 = OFF

值:ON 或 OFF

如果此变量为“N”,则客户机进程将允许应用程序复制要运行的进程(称为派生)。当进行派生时,结果将是不可预测的。结果可能是没有任何效果、出现更坏结果、返回一些错误代码或是应用程序中出现陷阱。如果确定应用程序没有派生且想要性能更佳,则应将此变量的值更改为“N”。
DB2_MINIMIZE_LIST_PREFETCH 所有 缺省值 = NO

值:YES 或 NO

列表预取装是一种特殊的表存取方法,它涉及到从索引中检索合格的 RID,按页号将它们排序,然后预取装数据页。

有时,优化器没有准确的信息来确定列表预取装是否是一种很好的存取方法。当谓词选择中的参数标志符或主变量可防止优化器使用目录统计信息来确定选择时,就可能会发生这种情况。

此注册表变量将防止优化器在这种情况下考虑使用列表预取。

DB2_INLIST_TO_NLJN 所有 缺省值 = NO

值:YES 或 NO

在某些情况下,SQL 编译器可以将 IN 列表谓词重写到连接中。例如,可以将以下查询:
    SELECT *
     FROM EMPLOYEE
     WHERE DEPTNO IN ('D11', 'D21', 'E21')
	  
改写为:
    SELECT *
     FROM EMPLOYEE, (VALUES 'D11', 'D21', 'E21) AS V(DNO)
     WHERE DEPTNO = V.DNO
	  

如果具有关于 DEPTNO 的索引,则此修订可以提供更高的性能。将首先存取值的列表,并通过使用索引来应用连接谓词,从而利用嵌套的循环连接来连接至 EMPLOYEE。

有时,优化器没有准确的信息来确定查询的重写版本的最佳连接方法。如果 IN 列表中的参数标志符或主变量可防止优化器使用目录统计信息来确定选择时,就会发生这种情况。此注册表变量将导致优化器使嵌套的循环连接更有利于连接值的列表,将提供了 IN 列表的表用作连接中的内部表。

|10.5.2 注册表变量 DB2BPVARS 的新参数

|注册表变量 DB2BPVARS 支持两个新参数:NUMPREFETCHQUEUES 和 |PREFETCHQUEUESIZE。这些参数适用于所有平台,并且可用来改进缓冲池数据的预取。例如,考虑顺序预取, |在此操作中,期望的 PREFETCHSIZE 被分成 |PREFETCHSIZE/EXTENTSIZE 预取请求。在此情况下,将请求放置在预取队列上,从预取队列中,分派 |I/O 服务器执行异步 I/O。缺省情况下,DB2 为每个数据库分区维护一个大小为 |max( 100 , 2*NUM_IOSERVERS) 的队列。在某些环境中,通过使用更多队列和/或不同大小的队列来提高性能。预取队列数至少应该是 |I/O 服务器数目的一半。当设置这些参数时,应考虑其它参数(例如,PREFETCHSIZE、EXTENTSIZE、NUM_IOSERVERS、缓冲池大小和 DB2_BLOCK_BASED_BP)以及工作负荷特征(例如,当前用户数)。

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

|表 6. 对新参数的总结

参数名称 缺省值 有效范围
NUMPREFETCHQUEUES 1 1 到 NUM_IOSERVERS

如果已将它设置为小于 1,则将它调整为 1

如果已将它设置为大于 NUM_IOSERVERS,则将它调整为 NUM_IOSERVERS

PREFETCHQUEUESIZE max(100,2*NUM_IOSERVERS) 1 到 32767

如果已将它设置为小于 1,则将它调整为缺省值

如果已将它设置为大于 32767,则将它调整为 32767

|10.5.3 对其它注册表变量的更正和补充

| | |

|DB2_NEWLOGPATH2 注册表变量可供所有操作系统使用。系统已经引入了新变量 DB2_ROLLFORWARD_NORETRIEVE。这些变量的更正信息如下所示。
|

|表 7. 其它变量

变量名 操作系统
描述
DB2_NEWLOGPATH2 ALL 缺省值 = NO

值:YES 或 NO

此参数允许您指定是否应使用辅助路径来实现双重记录。使用的路径是通过将“2”追加至 logpath 数据库配置参数的当前值生成的。
DB2_ROLLFORWARD_NORETRIEVE ALL 缺省值 =(未设置)

值:YES 或 NO

如果启用数据库配置参数 USEREXIT,则会在前滚操作期间从压缩文档中自动检索日志文件。DB2_ROLLFORWARD_NORETRIEVE 变量允许您指定前滚操作不应从压缩文档中检索日志文件。缺省情况下此变量是禁用的。如果不想要前滚自动检索日志文件,则将此变量设置为 YES。例如,在想要避免无效应用程序创建的日志记录破坏备份系统时,在热备用设置中将该变量设置为 YES。

|10.5.4 对常规注册表变量的更正和补充

| |

|系统已经引入了新变量 DB2_REDUCED_OPTIMIZATION。
|

|表 8. 常规注册表变量

变量名 操作系统
描述
DB2_REDUCED_OPTIMIZATION ALL 缺省值 = NO

值:YES、NO 或任何整数

此注册表变量会让您禁用在特定优化级别使用的某些优化技巧。如果减少使用的优化技巧,则会减少优化期间使用的时间和资源。
注意:
尽管使用的优化时间和资源可能会减少,但生成非最佳数据存取方案的风险增加了。
  • 如果设置为 NO:

    优化器不会更改它的优化技巧。

  • 如果设置为 YES:

    如果优化级别为 5(缺省值)或更低,则优化器会禁用可能会大量消耗准备时间且通常不会生成较好的存取方案的一些优化技巧。

    如果优化级别为 5,则优化器会收回或禁用一些附加技巧,这可能会进一步地减少使用的优化时间和资源,同时还会进一步地增加生成非最佳存取方案的风险。对于低于 5 的优化级别,其中一些技巧可能一点也不起作用。但是,如果优化级别为 5,则这些技巧还是起作用的。

  • 如果设置为任何整数:

    所起的作用就象是将值设置为 YES 一样,但还带有用于优化级别为 5 的动态准备查询的以下附加行为: 如果任何查询块中的连接总数超过了设置,优化器会切换至急需的连接枚举而不是禁用上述优化级别为 5 的附加优化技巧,这暗示查询将优化为类似于优化级别 2 的级别。

    有关急需的和动态的连接枚举,参见《管理指南:性能》中的『搜索策略以选择最佳连接』。

注意,优化级别为 5 的动态优化降低(就象《管理指南:性能》中的『调整优化类』中描述的那样)优先于 DB2_REDUCED_OPTIMIZATION 设置为 YES 时对优化级别 5 描述的行为以及对整数设置描述的行为。


[ 页的顶部 | 上一页 | 下一页 | 目录 | 索引 ]