科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道简化 DB2 for i5/OS 索引建议

简化 DB2 for i5/OS 索引建议

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文展示如何用 CLI 实现新的性能调优增强。作为附加的优点,您将必须利用 iSeries Navigator 的性能监视器特性分析任何查询的优化目标。

来源:IT专家网 2008年6月3日

关键字: IBM 数据库 DB2

  • 评论
  • 分享微博
  • 分享邮件

清单 2. CondensedIndexAdvice 视图定义

                
QSYS2.CONDENSEDINDEXADVICE ( 	
TABLE_NAME              FOR COLUMN TABNAME      VARCHAR(258) CCSID 37 NOT NULL , 
TABLE_SCHEMA            FOR COLUMN TABSCHEMA    CHAR(10) CCSID 37 NOT NULL , 
SYSTEM_TABLE_NAME       FOR COLUMN SYS_TNAME    CHAR(10) CCSID 37 NOT NULL , 
PARTITION_NAME          FOR COLUMN TABPART      VARCHAR(128) CCSID 37 DEFAULT NULL , 
KEY_COLUMNS_ADVISED     FOR COLUMN KEYSADV      VARCHAR(16000) CCSID 37 DEFAULT NULL , 
INDEX_TYPE                                      CHAR(14) CCSID 37 DEFAULT NULL , 
LAST_ADVISED            FOR COLUMN LASTADV      TIMESTAMP DEFAULT NULL , 
TIMES_ADVISED           FOR COLUMN TIMESADV     BIGINT DEFAULT NULL , 
ESTIMATED_CREATION_TIME FOR COLUMN ESTTIME      INTEGER DEFAULT NULL , 
LOGICAL_PAGE_SIZE       FOR COLUMN "PAGESIZE"   INTEGER DEFAULT NULL , 
MOST_EXPENSIVE_QUERY    FOR COLUMN QUERYCOST    INTEGER DEFAULT NULL , 
AVERAGE_QUERY_ESTIMATE  FOR COLUMN QUERYEST     INTEGER DEFAULT NULL , 
TABLE_SIZE                                      BIGINT DEFAULT NULL , 
NLSS_TABLE_NAME         FOR COLUMN NLSSNAME     CHAR(10) CCSID 37 DEFAULT NULL , 
NLSS_TABLE_SCHEMA       FOR COLUMN NLSSSCHEMA   CHAR(10) CCSID 37 DEFAULT NULL )

通过下面的 SELECT 语句可以看到,编写 SQL 语句来访问压缩的建议很简单。如前所述,压缩的索引建议分析可以在表级进行,也可以在模式级进行。

清单 3. CondensedIndexAdvice 查询示例
                
-- Condensed index advice for an entire schema, named CONDENSE
SELECT * FROM QSYS2.CONDENSEDINDEXADVICE WHERE table_schema = 'CONDENSE' ;

-- Condensed index advice for a specific table, named EMPLOYEE in CONDENSE schema
SELECT * FROM QSYS2.CONDENSEDINDEXADVICE 
       WHERE table_name = 'EMPLOYEE'  AND table_schema = 'CONDENSE';

-- Condensed index advice for a range of schemas, where the average 
-- query estimate driving the index advice is greater than 10 seconds
SELECT * FROM QSYS2.CONDENSEDINDEXADVICE 
   WHERE table_schema LIKE 'Q%' AND average_query_estimate > 10 ;

新的 CondensedIndexAdvice 视图使用的 Condense_Advice UDTF 还可以直接通过用户查询来访问。下面这个表函数的定义,另外还有一个简单的例子,用于演示如何使用该 UDTF。

清单 4. Condense_Advice UDTF
                
CREATE FUNCTION QSYS2.Condense_Advice(TABLE_SCHEMA VARCHAR(128), 
                                      TABLE_NAME VARCHAR(128) ) 
  RETURNS TABLE(TABLE_PARTITION VARCHAR(128), KEY_COLUMNS_ADVISED VARCHAR(16000), 
                INDEX_TYPE CHAR(14), LAST_ADVISED TIMESTAMP, TIMES_ADVISED BIGINT, 
                ESTIMATED_CREATION_TIME INTEGER, LOGICAL_PAGE_SIZE INTEGER,
                MOST_EXPENSIVE_QUERY INTEGER, AVERAGE_QUERY_ESTIMATE INTEGER,
                TABLE_SIZE BIGINT, NLSS_TABLE_NAME CHAR(10),NLSS_TABLE_SCHEMA CHAR(10))
  LANGUAGE C 
  NOT DETERMINISTIC 
  READS SQL DATA 
  CALLED ON NULL INPUT 
  SCRATCHPAD 325064 
  DISALLOW PARALLEL 	
  FINAL CALL 
  CARDINALITY 1 
  EXTERNAL NAME 'QSYS/QDBSSUDF2(CONDENSE_ADVICE)' 
  PARAMETER STYLE DB2SQL;   


-- Query the condenser UDTF directly, providing selection criteria and ordering 
-- the results of the 15 most important condensed entries
     SELECT * FROM TABLE(QSYS2.CONDENSE_ADVICE('CRPDTA','B123456')) AS a
       WHERE a.table_size >(1024*1024) AND MONTH(last_advised)= MONTH(CURRENT TIMESTAMP)
     ORDER BY average_query_estimate DESC 
     FETCH FIRST 15 ROWS ONLY ;

结束语

不管是使用压缩索引建议还是原始索引建议,都是改善索引策略的一个有效的办法。在根据建议采取行动之前,需要考虑的重要的一点是查看已有的索引和它们的使用情况。由于任何索引都隐含着维护成本,因此任何性能调优活动的共同之处就是限制永久索引的数量。本文的主旨是,查看压缩的索引建议,以发现改善性能的机遇,并且在作出任何更改之前和之后,查看索引的使用情况。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章