针对基础设计、性能和可管理性的DB2最佳实践
2010-05-14 15:00:37 来源:WEB开发网使用 Design Advisor 建议索引
一旦开发出了一种模式并且可以使用,将 SQL 语句作为输入使用 Design Advisor 来建议索引。对于经常使用的查询以及大型或复杂的查询,这一点尤其重要。
此外,针对由完整应用程序测试填充的动态 SQL 缓存重新运行 Design Advisor。这允许根据实际工作负载和 SQL 语句的执行频率建议索引。确保在 Design Advisor 执行之前运行了 runstats。
另一个方法可能需要较多的操作,但是允许利用潜在的(“虚拟的”)索引查看访问计划。可通过以下方法实现:
发出 SQL 语句 SET CURRENT EXPLAIN MODE RECOMMEND INDEXES。
在同一个会话中执行一条 SQL 语句,这会导致用建议的(“虚拟的”)索引填充 ADVISE_INDEX 表。
执行 SQL 语句 SET CURRENT EXPLAIN MODE EVALUATE INDEXES。
执行同一条 SQL 语句。现在将用优化器根据实际和虚拟索引选择的访问计划来填充解释表。
最后,利用当前和建议的索引使用诸如 db2exfmt 的解释工具查看访问计划。
改善日志性能
编写 DB2 日志的速度是一个重要的 DB2 性能因素(依赖于数据更新的速率)。以下是一些帮助改善 DB2 记录日志性能的技巧:
禁用自动提交(autocommit),在许多应用程序环境中这是默认启动的,比如 JDBC。每次提交都会记录一个同步日志。但是如果应用程序在每条 SQL 语句执行之后都需要提交,那么请不要禁用自动提交。
如果没有必要,不要记录大数据对象(CLOB、DBCLOB 和 BLOB)。
将 BD2 日志隔离到专门的磁盘存储器上(不要与任何其他内容共享)。特别地,确保没有将日志保存在实例目录的默认位置,因为默认情况下数据库本身也位于这里。
为日志分配一个具有快速写入缓存的磁盘存储器。
将日志缓冲区大小增加到 256 个页面或更大。
使用访问计划信息帮助优化 SQL 语句
了解如何使用访问计划信息优化 SQL 语句。访问计划描述访问路径,这些路径是 DB2 优化器为 SQL 语句访问数据而选择的。可视化解释(Visual Explain)是查看访问计划的最简单方式,通过 DB2 Control Center 实现。db2expln 和 db2exfmt 命令用更简洁的方式提供了广泛的信息,在需要针对性能频繁分析 SQL 语句时,通常使用这两个命令。
db2expln 使用起来比 db2exfmt 稍微简单,因为您能够直接将一条语句传递给它,以进行解释。同样,使用 db2expln 更容易分析一个包中所有的静态 SQL。db2exfmt 需要已经将一条 SQL 语句解释到这些表中,并设置 EXPLAIN 表中信息内容的格式。db2exfmt 通常用于广泛的性能分析,因为它提供了大部分优化器信息。
要了解关于使用 Explain 工具的更多信息,请查阅 “IBM DB2 Database for Linux, UNIX, and Windows Information Center” 的 “Visual Explain overview”、“db2expln - SQL and XQuery Explain Command” 和 “db2exfmt - Explain table format command” 部分。
运行时和可管理性技巧
专用的数据库服务器
如果可能,将服务器专门用于运行数据库。这样,无需关心未知的额外工作负载就可以执行数据库调优。
DB2 的自动功能
考虑使用 DB2 的自动功能,尤其是 DB2 9 支持的 STMM,以及 DB2 Version 8 和 DB2 9 都支持的 Automatic Maintenance(尤其是自动的 runstats)。这些功能不但会减少监控和维护数据库所需的操作,也能对数据库进行更加有效的调优。
更多精彩
赞助商链接