扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
清单 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 UDTFCREATE 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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者