标题: 简化 DB2 for i5/OS 索引建议 [打印本页] 作者: admin 时间: 2014-10-13 15:06 标题: 简化 DB2 for i5/OS 索引建议 理解和实现最佳 SQL 查询优化目标可以大大改善很多查询的响应时间。IBM? DB2? for i5/OS? on V5R4 提供了一种新方法,通过一些流行的动态 SQL 接口控制查询优化。本文展示如何用 CLI 实现新的性能调优增强。作为附加的优点,您将必须利用 iSeries Navigator 的性能监视器特性分析任何查询的优化目标。 DB2 for i5/OS on V5R4 经过改进,现包含一个 Index Advice Condenser。查询和 SQL 活动会留下一些索引建议。当考虑是否创建永久索引时,很多原始的索引建议可以看作是互补的或者可压缩的。本文解释新的 Index Advisor 压缩特性,并演示如何在 iSeries Navigator 图形界面中使用该特性,或直接用一个定制的用户查询来访问该特性。 DB2 for i5/OS Index Advisor
Index Advisor 是 DB2 for i5/OS V5R4 中引入的特性,该特性记录关于系统索引需要的统计信息。每当执行一个查询或 SQL 语句时,Index Advisor 都会记录查询优化器建议使用的一些索引,留住提高性能的机会。这方面的基础知识有助于理解这个新的 Index Advice Condenser。
每当建议一个索引时,就有一个新行被添加到系统索引建议表中,即模式 QSYS2 中的 SYSIXADV 表。这里是假设该索引之前还没有被建议。Index Advisor 检查以下列中的属性,以判断一个索引是否已经被优化器建议:
LEADING_COLUMN_KEYS
KEY_COLUMNS_ADVISED
TABLE_NAME
TABLE_SCHEMA
INDEX_TYPE
PARTITION_NAME
NLSS_TABLE_NAME
NLSS_TABLE_SCHEMA
表 3 给出了 SYSIXADV 表的完整布局。如果表中已经有匹配的建议,则更新已有的行。例如,“Number of Times Advised”条目加一,“Last Advised for Query Use”被更新为当前时间。
就原始格式而言,索引建议不一定是冗长的。虽然表中所有条目都是惟一的,但是有些条目仍然存在冗余。一个很好的例子就是,如果有相同的一些列被建议,建议的顺序有所不同,但这些键的顺序无关紧要,那么就会出现上述情况。在这种情况下,可以用这些列创建覆盖不同索引实例的一个索引。对被建议的键重新排序的时机可通过“Leading Keys Order Independent”列表明。这一列中列出的键是可以被重新排序,且仍然能够满足被建议的索引的领头键。 被建议索引的示例
我们来看一些索引建议的示例,以便为 condenser 的简化工作搭建背景。下面的例子假设所有建议都是基于相同表、相同分区、相同的索引类型和排序顺序的。