[AIX Solaris HP-UX Linux Windows][z/OS]

DB2 调整参数

请阅读本主题,以便了解您为了提高数据库性能而可配置的参数。

要获取完整的 DB2® 调整信息,请参阅 DB2 UDB Administration Guide: Performance 文档。

[AIX]有关将 AIX® 与 DB2 配合使用的更多信息,请参阅“调整 AIX 系统”主题。

DB2 日志记录

对于每个为管理员提供服务(包括查看数据库访问权和连接数)的数据库,DB2 都有相应的日志文件。对于具有多个硬盘驱动器的系统,您可以通过将每个数据库的数据库文件和日志文件设置在不同的硬盘驱动器上,来大幅提高性能。

  • 如何查看或设置:在 DB2 命令提示符处,发出以下命令:db2 update db cfg for [database_name] using newlogpath [fully_qualified_path]
  • 缺省值:日志与数据库驻留在同一磁盘上。
  • 建议值:使用独立的高速驱动器,通过独立磁盘冗余阵列 (RAID) 配置增强性能更好。

DB2 配置顾问程序

此顾问程序在 DB2 控制中心中,用于计算和显示 DB2 缓冲池大小、数据库和数据库管理器配置参数的建议值,并允许您选择应用这些值。请在控制中心中的联机帮助工具中参阅更多有关顾问程序的信息。

对 DB2 建立的连接数 - MaxAppls 和 MaxAgents

在配置数据库的数据源设置时,请确认 DB2 MaxAppls 设置大于数据源的最大连接数。如果您正在规划建立克隆,请将 MaxAppls 值设置为最大连接数乘以克隆数。此同一关系还适用于连接的会话管理器数。MaxAppls 设置必须等于或大于连接数。如果让会话和数据源使用同一个数据库,请将 MaxAppls 值设置为会话管理器和数据源的连接数设置之和。

例如,MaxAppls = (为数据源设置的连接数 + 会话管理器中的连接数) 乘以克隆数。

在计算 WebSphere® Application Server 数据库和每个应用程序数据库的 MaxAppls 设置后,请验证 DB2 的 MaxAgents 设置是否等于或大于所有 MaxAppls 值之和。例如,MaxAgents = 所有数据库的 MaxAppl 之和。

DB2 buffpage

提高数据库系统性能。Buffpage 是数据库配置参数。缓冲池是内存存储区域,在其中临时读取和更改包含表行或索引条目的数据库页面。从内存访问数据比从磁盘访问数据快得多。

  • 如何查看或设置:要查看数据库 x 的当前 buffpage 值,请发出 DB2 命令 get db cfg for x 并查找值 BUFFPAGE。要将 BUFFPAGE 设置为值 n,请使用 BUFFPAGE n 发出 DB2 命令 update db cfg for x 并将 NPAGES 设置为 -1,如下所示:
    db2   <-- 转到 DB2 命令方式,否则以下“select”无效
    connect to x    <--(其中 x 是特定 DB2 数据库名称)
        select * from syscat.bufferpools 
           (并记录缺省值的名称,此名称可能是:IBMDEFAULTBP)
           (如果 NPAGES 已是 -1,那么不需要发出以下命令)
        alter bufferpool IBMDEFAULTBP size -1
        (重新发出以上“select”,NPAGES 现在等于 -1)
    当应用程序正在运行时,您可以收集数据库的快照和按如下所示计算缓冲池命中率:
    1. 收集快照:
      1. 发出“update monitor switches using bufferpool on”命令。
      2. 通过发出“get monitor switches”命令,确保缓冲池监控功能打开。
      3. 使用“reset monitor all”命令清除监视器计数器。
    2. 运行应用程序。
    3. 在所有应用程序从数据库断开连接前发出“get snapshot for all databases”命令,否则统计信息会丢失。
    4. 发出“update monitor switches using bufferpool off”命令。
    5. 通过查看以下各数据库快照统计信息计算命中率:
      • 缓冲池数据逻辑读
      • 缓冲池数据物理读
      • 缓冲池索引逻辑读
      • 缓冲池索引物理读
  • 缺省值:250
  • 建议值:继续增加值直到快照显示令人满意的命中率。
缓冲池命中率表明数据库管理器不需要从磁盘装入页面以为页面请求提供服务的时间百分比。即页面已在缓冲池中。缓冲池命中率越高,磁盘输入和输出的频率越低。按如下所示计算缓冲池命中率:
  • P = 缓冲池数据物理读 + 缓冲池索引物理读
  • L = 缓冲池数据逻辑读 + 缓冲池索引逻辑读
  • 命中率 = (1-(P/L)) * 100%

DB2 查询优化级别

设置 DB2 投入优化访问方案的工作量和资源量。在 DB2 中运行数据库查询时,将使用各种方法来计算最有效的访问方案。范围为从 0 到 9。优化级别 9 将使 DB2 投入大量时间和所有可用统计信息来优化访问方案。

  • 如何查看或设置:您可以使用命令行或 DB2 控制中心对各个数据库设置优化级别。静态 SQL 语句使用在 prepbind 命令上指定的优化级别。如果未指定优化级别,那么 DB2 将使用 dft_queryopt 设置所指定的缺省优化级别。动态 SQL 语句使用由当前查询优化专用寄存器指定的优化类,此优化类使用 SQL Set 语句设置。例如,以下语句将优化类设置为 1:
    Set current query optimization = 1
    如果未设置当前查询优化寄存器,那么将使用缺省查询优化类来绑定动态语句。
  • 缺省值:5
  • 建议值:根据应用程序需要设置优化级别。仅当是非常复杂的查询时才使用高级别。

DB2 reorgchk

获取当前的数据统计信息和重新绑定统计信息。由于执行大量 UPDATE、DELETE 或 INSERT 语句后 SQL 语句性能可能会下降,所以使用此参数。

  • 如何查看或设置:使用 DB2“reorgchk update statistics on table all”命令对您当前所连接的数据库的所有用户表和系统表执行 runstats 操作。使用 bind 命令重新绑定包。如果统计信息存在,请对 DB2 CLP 发出 db2 -v“select tbname, nleaf, nlevels, stats_time from sysibm.sysindexes”命令。如果不存在统计信息更新,那么 nleaf 和 nlevels 为 -1,而 stats_time 的条目为空(例如“-”)。如果先前曾运行 runstats 命令,那么 runstats 操作完成时的实时戳记也将显示在 stats_time 下方。如果您认为先前 runstats 操作的时间离当前时间太久,请再次执行 runstats 命令。
  • 缺省值:无
  • 建议值:无

DB2 locktimeout

指定应用程序等待获取锁定的秒数。设置此属性有助于应用程序避免全局死锁。

  • 如何查看或设置:要查看数据库 xxxxxx 的锁定超时属性的当前值,请发出 DB2 get db cfg for xxxxxx 命令并查找值 LOCKTIMEOUT。 要将 LOCKTIMEOUT 设置为值 n,请使用 LOCKTIMEOUT n 发出 DB2 update db cfg for xxxxxx 命令,其中,xxxxxx 是应用程序数据库的名称,而 n 是介于 0 与 30 000 之间的值(包括首尾值)。
  • 缺省值:-1,这意味着锁定超时检测已关闭。 在这种情况下,如果发出请求时没有可用的锁定,那么应用程序将等待锁定,直到发生下列任何一个事件为止:
    • 锁定被授权
    • 发生死锁
  • 建议值:如果数据库访问模式趋向于以写操作为主,请设置此值,以便在发生超时之前发出预警。30 秒的设置适合此目的。如果数据库访问模式趋向于以读操作为主,请接受缺省锁定超时值或者将该属性设置为大于 30 秒的值。

DB2 maxlocks

指定数据库管理器对应用程序保持的锁定执行从行到表的升级时,所达到的锁定列表百分比,虽然升级过程不需要太多时间,但锁定整个表与锁定个别行相比会降低并行性,并由于以后尝试访问受影响的表而可能降低数据库的整体性能。

  • 如何查看或设置:要查看数据库 xxxxxx 的 maxlocks 属性的当前值,请发出 DB2 get db cfg for xxxxxx 命令并查找 MAXLOCKS 值。 要将 MAXLOCKS 设置为值 n,请使用 MAXLOCKS n 发出 DB2 update db cfg for xxxxxx 命令,其中,xxxxxx 是应用程序数据库的名称,而 n 是介于 1 与 100 之间的值(包括首尾值)。
  • 缺省值:请参阅当前数据库信息以了解每个操作系统的属性缺省值。
  • 建议值:如果锁定升级会导致性能担忧,那么您可能需要增加此参数或 locklist 参数的值,下文中描述了该参数。 您可以使用数据库系统监视器来确定是否正在发生锁定升级。

DB2 locklist

指定分配给锁定列表的存储量。

  • 如何查看或设置:要查看数据库 xxxxxx 的 locklist 属性的当前值,请发出 DB2 get db cfg for xxxxxx 命令并查找 LOCKLIST 值。 要将 LOCKLIST 设置为值 n,请使用 LOCKLIST n 发出 DB2 update db cfg for xxxxxx 命令,其中,xxxxxx 是应用程序数据库的名称,而 n 是介于 4 与 60 000 之间的值(包括首尾值)。
  • 缺省值:请参阅当前数据库信息以了解每个操作系统的属性缺省值。
  • 建议值:如果锁定升级会导致性能担忧,那么您可能需要增加此参数或 maxlocks 参数的值,上文中描述了该参数。 您可以使用数据库系统监视器来确定是否正在发生锁定升级。有关更多详细信息,请参阅 DB2 Administration Guide: Performance 文档。

指示主题类型的图标 参考主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rprf_db2parameters
文件名:rprf_db2parameters.html