针对基础设计、性能和可管理性的 DB2 最佳实践
2008-09-17 16:31:13 来源:WEB开发网最小化死锁
在整个应用程序中,总是按相同次序访问资源可以最小化死锁。例如,如果一个应用程序组件将要访问表 A,然后是表 B,接着是表 C,而另一个应用程序组件需要访问表 A 和 C,那么第 2 个组件应该遵循先 A 后 C 的访问次序。
对于 DB2 Version 8,导致死锁的一个常见原因是锁列表数据库配置参数的大小不足,尤其是使用默认值时。请参阅本文的 最大化并发性 小节。如果出现这种情况,增加锁列表大小就可以解决问题。默认情况下 DB2 9 使用了 STMM,它会调整锁列表大小以避免可能由此引起的锁升级和死锁。
确保参照完整性(referential integrity,RI)关系中的依赖表拥有与外键匹配的索引。
利用连接池
利用连接池,包括由应用服务器管理的连接池,如果不在应用服务器环境中运行,则使用由应用程序管理的连接池。打开和关闭连接的过程开销较大,会影响到应用程序或数据库的性能,而使用连接池就可以消除大部分这样的开销。
如果使用了大量的连接,那么请使用 DB2 的连接集中器(connection concentrator)功能。该功能只允许较少的 DB2 “后端” 连接为应用程序连接服务,从而节省了内存。
动态或静态 SQL 选择
现在,动态 SQL 比静态 SQL 更加广泛。通常,动态 SQL 更容易实现,而且通过语句重用,能获得跟静态 SQL 一样的性能。然而,仍然有一些适合静态 SQL 的情形,比如涉及到安全性因素、针对某些 OLTP 工作负载最大化性能等情况。
要获取关于何时使用静态 SQL 的全面信息,请参阅 DB2 在线文档。
要了解特定的 Java™ 环境需要考虑的因素,包括使用 SQLJ 创建静态 SQL,请查阅 “IBM DB2 Database for Linux, UNIX, and Windows Information Center” 的 “Introduction to SQLJ” 部分。
更多精彩
赞助商链接