OLTP应用程序的DB2调优技巧
2009-12-12 14:59:20 来源:WEB开发网背景知识
诸如备份和恢复之类的实用程序使用 I/O 服务器代表数据库代理程序执行预取 I/O 和异步 I/O。该参数是一个数据库配置参数,用于指定数据库的 I/O 服务器的数目。超过这个数量的预取和实用程序 I/O 在任何时候都不能在数据库中运行。在启动 I/O 操作时,I/O 服务器处于等待状态。由于从数据库代理程序直接调度非预取 I/O,因此非预取 I/O 不受 NUM_IOSERVERS 约束。
建议
在 OLTP 环境中,请使用缺省值。
如何更改该参数
使用下面的命令为 NUM_IOSERVERS 设置新值: db2 -v update db cfg for DB_NAME using NUM_IOSERVERS a_number
db2 -v terminate
编入组中的提交数目(MINCOMMIT)
背景知识
MINCOMMIT 是数据库配置参数,它让您把将日志记录写到磁盘的工作一直延迟到执行了最小数量的提交为止。该延迟可以有助于减少与写日志记录相关的数据库管理器开销。这意味着当您针对数据库运行多个应用程序并且在非常短的时间范围内应用程序请求大量提交时可以提高性能。只有当该参数值大于 1 并且当连接到数据库的应用程序数量大于或等于该参数值时,才会发生这个提交分组。当执行提交分组时,应用程序提交请求会被挂起,直到时间过去 1 秒或提交请求的数量等于该参数值。
建议
MINCOMMIT 的缺省值为 1。如果多个读/写应用程序通常请求并发数据库提交,则从缺省值开始递增该参数值。这将产生更有效率的日志文件 I/O,因为使用日志文件 I/O 的次数比较少,而每次使用日志文件 I/O 时所写的日志记录比较多。如果您认为缺省值不够大,那么建议您从 3 开始进行调整,在 3 的附近尝试以查看性能对工作负载的影响。您还可以对每秒钟的事务量进行采样,并调整该参数以适应每秒钟的峰值事务量(或者采用它的某个较大的百分比)。适应峰值活动使得在重负载期间写日志记录的开销减到了最低。
如果增大 MINCOMMIT,可能还需要增大 LOGBUFSZ 参数以避免在这些重负载期间强制将已满的日志缓冲区写入磁盘。在这种情况下,LOGBUFSZ 应该等于: MINCOMMIT * (log space used, on average, by a transaction)
下面介绍了如何使用数据库系统监视器帮助您调优该参数的一些方法:
计算每秒钟的峰值事务数:
通过采用典型一天中的监视器样本,可以确定重负载时期。它的一种实现方法是:
1. 在测量开始时,发出下面这个命令: db2 -v reset monitor for database db_name
(这不会使高水位的计数器复位。)
2. 在测量完毕后,发出下面这个命令: db2 -v get snapshot for database on db_name
3. 使用以下输出来计算事务的峰值: Last reset timestamp = 06-12-2001 14:51:43.786876
Snapshot timestamp = 06-12-2001 14:56:27.787088
Commit statements attempted = 1011
Rollback statements attempted = 10
Log space used by the database (Bytes) = 3990
让 totalTransactions等于“commit statements attempted”和“rollback statements attempted”的总和。
让 totalElapsedTime(单位为秒)等于“Last reset timestamp”和“Snapshot timestamp”的差。如下计算每秒事务数: NumOfTransPerSecond = totalTransactions / totalElapsedTime
计算每个事务所使用的日志空间:
用类似的方式,通过在一段时间内对一些事务使用抽样技术,可以通过下面这个监视器元素: log_space_used(所使用的工作日志空间单元)计算出使用的日志空间的平均值。
1. 在测量开始时使用下面这个命令将感兴趣的数据库的监视器复位: db2 -v reset monitor for database db_name.
2. 在测量完毕后使用下面这个命令获取快照: db2 -v get snapshot for database on db2_name.
3. 产生如上所示的输出。
4. 可以使用下面这个公式计算出每个事务所使用的日志空间: LogSpaceUsedPerTrans = log_space_used / totalTransactions
如何更改该参数
使用下面的命令更改 MINCOMMIT 值: db2 -v update db cfg for
DB_NAME using MINCOMMIT
a_number
db2 -v terminate
结束语
本文描述了一些 DB2 性能方面的基本要素、调优技巧和技术以及可能影响 OLTP 性能的一些主要的 DB2 配置参数。通过按照这里所描述的一些简单步骤,可以设置、监控和调优 DB2 数据库系统。我们希望本文所提供的指导能帮助您实现最优化 DB2 应用程序性能的目标。
- ››db2 对float类型取char后显示科学计数法
- ››DB2中出现SQL1032N错误现象时的解决办法
- ››DB2 锁升级示例
- ››db2诊断系列之---定位锁等待问题
- ››db2 命令选项解释
- ››应用程序的配置管理Poco
- ››DB2 最佳实践: 使用 DB2 pureXML 管理 XML 数据的...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 基础: 表空间和缓冲池
- ››DB2 XML 编程,第 1 部分: 理解 XML 数据模型
更多精彩
赞助商链接