针对基础设计、性能和可管理性的 DB2 最佳实践
2008-09-17 16:31:13 来源:WEB开发网对于好的数据库性能来说,最大化并发性非常重要。下面列出了一些详细的建议:
有 3 个注册变量会影响到并发性。这些变量可以改善并发性,但是也会影响到应用程序的行为。建议在 DB2 开发流程的初期启用这些注册变量,从而在实现并发性增强后执行全面测试中的所有单元测试。要获得更多信息,请参考 “IBM DB2 Database for Linux, UNIX, and Windows Information Center” 中的 “Evaluate Uncommitted Data” 和 “Performance Variables” 部分。
DB2_EVALUNCOMMITTED=YES:对于 V8,从 V8.1 FP9(也即 V8.2 FP2)开始,最佳的设置是 =YES_DEFERISCANFETCH。对于 V9,只需指定 =YES。
DB2_SKIPDELETED=ON
DB2_SKIPINSERTED=ON
选择隔离级别可以为应用程序提供可接受的最佳并发性。有几种方式可用来指定隔离级别,比如对 SQL 语句(只应用于该语句)使用 CURRENT ISOLATION 专用寄存器(应用于连接),以及对 JDBC 连接对象进行指定(应用于连接)。
通过监控锁升级的发生(通过 DB2 状态监控器、db2diag.log、windows 事件浏览器或其他性能监控器,或者利用 DB2 STMM),确保锁列表和 maxlock DB 配置参数足够大。锁列表大小不足将会导致 DB2 尝试将大量行锁 “升级” 到单个表级别的锁。如果升级失败,就会导致死锁;如果升级成功,又会极大地影响到并发性。
最大化并发性的一个例外是,在已知某些时间内只有单个连接访问表的情况。可以考虑使用 ALTER TABLE <name> LOCKSIZE TABLE 来最小化锁定(和相关的内存或 CPU 使用)。请谨慎使用。
“Lock avoidance in DB2 UDB V8”(developerWorks,2005 年 9 月)介绍了大量相关概念。
更多精彩
赞助商链接