DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1059|回复: 0
打印 上一主题 下一主题

[待整理] 简化 DB2 for i5/OS 索引建议

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-13 15:06:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
理解和实现最佳 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 的简化工作搭建背景。下面的例子假设所有建议都是基于相同表、相同分区、相同的索引类型和排序顺序的。
表 1. 被建议索引的示例 1

            被建议的键            领头键,顺序无关                            C1, C2, C3            C1, C2, C3                            C1, C3, C2            C1          在这个例子中,建议的第二行不易变通。为了满足索引建议,一个永久的索引需要有顺序为 { C1, C3, C2 } 的键。但是,建议的第一行有很大的灵活性。领头键顺序无关这个细节表明,键之间可以按任意顺序排列,所以可以通过将 { C1, C2, C3 } 重新排序为 { C1, C3, C2 },将两行建议压缩成一个永久索引。

         如果扩展表 2 中的例子,使之包括第三行建议,那么仍然可以得出结论,附加的一个永久索引 { C1, C3, C2, C4 } 应该足以帮助优化器永久地提高这些查询的性能。
表 2. 被建议索引的示例 2

            被建议的键            领头键,顺序无关                            C1, C2, C3            C1, C2, C3                            C1, C3, C2            C1                            C1, C3, C2, C4            C1, C2, C3, C4        
  Index Advisor 与压缩的索引建议的比较
  压缩索引建议技术要求在服务器上安装以下 V5R4M0 5722-SS1 PTF:SI25391、SI25469 和 SI25470。
  当压缩索引建议时,原始索引建议变成概要形式。原始建议中的一些字段是特定于建议实例的,在概要形式中没有价值。为了保持压缩的建议的重要性,其它字段则很重要。 表 3 逐列解释了在索引建议压缩期间原始索引建议发生的变化。跟 Index Advisor 下相比,压缩的索引建议允许进行与之相同的 iSeries Navigator 动作,只有一个例外。由于压缩的索引建议不是永久存在的,因此没有“Remove from List”动作。
表 3. Condenser 对列的更改

            列名            列标题            压缩动作                            Table_NAME            建议索引时所基于的表            保留,不作更改                            Table_SCHEMA            包含表的模式            保留,不作更改                            SYSTEM_TABLE_NAME            建议索引时所基于的系统表的表名            保留,不作更改                            PARTITION_NAME            索引的分区细节            保留,不作更改                            KEY_COLUMNS_ADVISED            被建议索引的列名            生成                            LEADING_COLUMN_KEYS            领头的、顺序无关的键,这些键在 Key_Columns_Advised 字段的开头部分,可以重新排列该字段且仍能满足被建议的索引            使用后丢弃                            INDEX_TYPE            基数(默认)或编码向量索引(EVI)            保留,不作更改                            LAST_ADVISED            该行的上一次更新时间            使用最新建议时间戳                            TIMES_ADVISED            索引被建议的次数            通过总计生成                            ESTIMATED_CREATION_TIME            估计创建索引所需的秒数            使用最大值                            REASON_ADVISED            表明索引被建议的原因的原因码            丢弃                            LOGICAL_PAGE_SIZE            建议用于索引的页面大小            使用最大值                            MOST_EXPENSIVE_QUERY            查询的执行时间,单位为秒            使用最大值                            AVERAGE_QUERY_ESTIMATE            查询的平均执行时间,单位为秒            通过求平均值生成                            Table_SIZE            当索引被建议时表中的行数            使用最新建议中的值                            NLSS_TABLE_NAME            用于索引的排序顺序表            保留,不作更改                            NLSS_TABLE_SCHEMA            排序顺序表的库名            保留,不作更改                            MTI_USED            因匹配的永久索引不存在,而使用与被建议定义相匹配的 MTI(被维护的临时索引,自主索引)的次数            丢弃                            MTI_CREATED            这个特定的索引建议被用于创建 MTI 的次数            丢弃                            LAST_MTI_USED            上一次因匹配的永久索引不存在而使用 MTI 的时间            丢弃        
……
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-11-15 17:31 , 耗时 0.087796 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表