使用配置参数配置 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 的值,那么所有新请求都将使用新值。
    • 事务边界 - 在事务边界上更改的参数。 例如,dl_expint 的新值在 COMMIT 语句之后生效。
    • 连接 - 在新的数据库连接上更改的参数。 例如,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) 描述为具有可接受的值 YesNoOnOff 。 确切而言,必须将 Yes 视为等同于 On,而将 No 视为等同于 Off