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

DB2调整参数

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

为了完成DB2®调整信息,请参阅DB2 UDB 管理指南:性能文档。

[AIX]有关使用的更多信息AIX®和DB2参见主题调整AIX系 统。

DB2日志记录

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

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

DB2配置顾问

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

连接数DB2 -MaxAppls和MaxAgents

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

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

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

DB2缓冲页

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

  • 如何查看或设置:查看数据库的 buffpage 当前值x,发出DB2命令get db cfg for x并寻找价值BUFFPAGE。 设置BUFFPAGE价值n,发出DB2命令update db cfg for x使用BUFFPAGE n 并设置NPAGES到-1如下:
    db2   <-- go to DB2 command mode, otherwise the following select does not work as is
        connect to x    <-- (where x is the particular DB2 database name) 
        select * from syscat.bufferpools 
           (and note the name of the default, perhaps: IBMDEFAULTBP)
           (if NPAGES is already -1, there is no need to issue following command) 
        alter bufferpool IBMDEFAULTBP size -1
        (re-issue the above select and NPAGES now equals -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投入大量时间和所有可用统计数据来优化访问计划。

  • 如何查看或设置:优化级别是在各个数据库上设置的,可以使用命令行或DB2Control Center。 静态 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-v从中选择 tbname、nleaf、nlevels、stats_timesysibm.sysindexes命令DB2中电。 如果不存在统计更新,则 nleaf 和 nlevels -1并且 stats_time 有一个空条目(例如: -)。如果先前运行了 runstats 命令,则 runstats 操作完成时的实时时间戳也会显示在 stats_time 下。 如果您认为先前 runstats 操作的时间离当前时间太久,请再次执行 runstats 命令。
  • 缺省值:无
  • 建议值:无

DB2锁定超时

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

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

DB2最大锁

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

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

DB2锁列表

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

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