扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
清单 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 语句来访问压缩的建议很简单。如前所述,压缩的索引建议分析可以在表级进行,也可以在模式级进行。
-- 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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。