DB2 10.5 for Linux, UNIX, and Windows

使用配置参数配置 DB2 数据库管理器

数据库管理器根据这些参数的缺省值分配的磁盘空间和内存可能足以满足您的需要。但在某些情况下,使用这些缺省值可能无法实现最佳性能。

关于此任务

因为缺省值适用于内存资源相对较少且专门用作数据库服务器的机器,所以如果您的环境存在以下情况,那么可能需要修改这些值:
  • 大型数据库
  • 大量连接
  • 对特定应用程序有高性能要求
  • 唯一的查询或事务负载或类型

在一个或多个方面,每个事务处理环境都唯一。当使用缺省配置时,这些差异可能对数据库管理器的性能产生深远的影响。 因此,强烈建议您调整您的环境配置。

调整配置最好是使用“配置顾问程序”或 AUTOCONFIGURE 命令开始。这些工具根据您对有关工作负载特征的提问的回答来生成参数值。

可以将一些配置参数设为 AUTOMATIC,从而允许数据库管理器自动管理这些参数来反映当前资源要求。要关闭配置参数的 AUTOMATIC 设置并同时维护当前内部设置,请将 MANUAL 关键字与 UPDATE DATABASE CONFIGURATION 命令配合使用。如果数据库管理器更新这些参数的值,那么 GET DB CFG SHOW DETAILGET DBM CFG SHOW DETAIL 命令将显示新值。

个别数据库的参数存储在名为 SQLDBCONF 的配置文件中。此文件与 SQLnnnnn 目录中的数据库的其他控制文件存储在一起,其中 nnnnn 是创建数据库时指定的数字。每个数据库都有它自己的配置文件,并且文件中的大多数参数指定分配给该数据库的资源量。该文件还包含描述信息以及指示数据库的状态的标志。

注意:如果您使用非数据库管理器提供的方法来编辑 db2systmSQLDBCONSQLDBCONF,那么可能会使数据库不可用。不要使用非数据库管理器记载和支持的方法来更改这些文件。

在分区数据库环境中,对于每个数据库分区都存在一个单独的 SQLDBCONF 文件。在每个数据库分区上,SQLDBCONF 文件中的值可能相同或不同,但是在同机种环境中,建议配置参数值在所有数据库分区上都相同。通常,可能有一个目录节点需要不同的数据库配置参数设置,而其他数据分区也具有不同的值,这取决于它们的机器类型和其他信息。

过程

  1. 更新配置参数。
    • 使用命令行处理器来更新:

      可以按如下所示输入用于更改这些设置的命令:

      对于数据库管理器配置参数:
      • GET DATABASE MANAGER CONFIGURATION(或者 GET DBM CFG
      • UPDATE DATABASE MANAGER CONFIGURATION(或者 UPDATE DBM CFG
      • RESET DATABASE MANAGER CONFIGURATION(或者 RESET DBM CFG),以便将所有数据库管理器参数重置为其缺省值
      • AUTOCONFIGURE
      对于数据库配置参数:
      • GET DATABASE CONFIGURATION(或者 GET DB CFG
      • UPDATE DATABASE CONFIGURATION(或者 UPDATE DB CFG
      • RESET DATABASE CONFIGURATION(或者 RESET DB CFG),以便将所有数据库参数重置为其缺省值
      • AUTOCONFIGURE
    • 使用应用程序编程接口 (API):
      API 可从应用程序或主语言程序中调用。调用以下 DB2® API 来查看或更新配置参数:
      • db2AutoConfig - 访问配置顾问程序
      • db2CfgGet - 获取数据库管理器参数或数据库配置参数
      • db2CfgSet - 设置数据库管理器参数或数据库配置参数
    • 使用公共 SQL 应用程序编程接口 (API) 过程来更新:
      可以从基于 SQL 的应用程序、DB2 命令行或命令脚本中调用公共 SQL API 过程。请通过调用下列过程来查看或更新配置参数:
      • GET_CONFIG - 获取数据库管理器配置参数或数据库配置参数
      • SET_CONFIG - 设置数据库管理器配置参数或数据库配置参数
    • 通过使用 IBM® Data Studio,右键单击实例以打开任务助手来更新数据库管理器配置参数。
  2. 查看已更新的配置值。

    对于某些数据库管理器配置参数,必须停止数据库管理器(db2stop),然后重新启动它(db2start)才能使新的参数值生效。

    对于某些数据库参数,仅当重新激活数据库或者数据库从脱机状态转变为联机状态时,更改才生效。在这些情况下,所有应用程序必须首先与该数据库断开连接。(如果已激活该数据库,或者它已从脱机状态转变为联机状态,那么必须先停用,然后再重新激活。)然后,与该数据库建立第一个新的连接时,这些更改才生效。

    如果在连接至某个实例时更改可配置的联机数据库管理器配置参数的设置,那么 UPDATE DBM CFG 命令的缺省行为将是立即应用更改。如果您不想立即应用更改,那么在 UPDATE DBM CFG 命令上使用 DEFERRED 选项。

    要以联机方式更改数据库管理器配置参数:
    db2 attach to instance-name
    db2 update dbm cfg using parameter-name value
    db2 detach

    对于客户机,数据库管理器配置参数的更改在下次该客户机与服务器连接时生效。

    如果在连接时更改可配置联机数据库配置参数,那么缺省行为是联机应用更改(只要有可能)。请注意,某些参数更改由于与分配空间相关的额外处理时间而可能花费相当长的时间才会生效。要从命令行处理器联机更改配置参数,需要与数据库的连接。要联机更改数据库配置参数:
    db2 connect to dbname
    db2 update db cfg using parameter-name parameter-value
    db2 connect reset
    每个可配置的联机配置参数都有一个与之关联的传播类。传播类指示您可以期望配置参数的更改何时生效。有四种传播类:
    • 立即:在命令或 API 调用中立即更改的参数。例如,diaglevel 具有立即传播类。
    • 语句边界:在语句或类似语句的边界上更改的参数。例如,如果您更改 sortheap 的值,那么所有新的请求都将使用新值。
    • 事务边界:在事务边界上更改的参数。例如,在 COMMIT 语句之后更新 dl_expint 的新值。
    • 连接:在与数据库的新连接上更改的参数。例如,dft_degree 的新值对连接到数据库的新应用程序生效。

    虽然新参数值可能未立即生效,但是查看参数设置(使用 GET DATABASE MANAGER CONFIGURATIONGET DATABASE CONFIGURATION 命令)将始终显示最新的更新。使用这些命令上的 SHOW DETAIL 子句查看参数设置将显示内存中的最新更新和值。

  3. 更新数据库配置参数之后重新绑定应用程序。

    更改某些数据库配置参数可能会影响由 SQL 和 XQuery 优化器选择的存取方案。在更改其中任何一个参数后,应考虑重新绑定应用程序来确保对 SQL 和 XQuery 语句使用最佳的存取方案。任何联机修改的参数(例如,通过使用 UPDATE DATABASE CONFIGURATION IMMEDIATE 命令)都将导致 SQL 和 XQuery 优化器为新查询语句选择一个新的存取方案。但是,查询语句高速缓存不会清除现有条目。要清除查询高速缓存的内容,可使用 FLUSH PACKAGE CACHE 语句。

    注: 在帮助文档和其他 DB2 文档中,许多配置参数(例如,health_mon)被描述为具有可接受的值 YesNo,或者 OnOff。为了清楚起见,应将 Yes 视为等价于 On,而应将 No 视为等价于 Off