查看系统中耗用时间的位置
可以使用“耗用时间”监视元素来了解系统中耗用时间的位置。可以使用“耗用时间”监视元素来针对特定工作单元、服务子类、工作负载或连接进行报告。
关于此任务
备注:
- 这些查询的输出中所显示的值只是为了便于说明,不应将它们理解为表示您在自己的系统中可能看到的内容。
- 此任务说明如何检索特定的“耗用时间”监视元素。还可以使用 V9.7 修订包 1 中引入的新的格式化函数来检索满足特定条件的“耗用时间”监视元素,例如,具有非零值的那些监视元素,在您指定的某一范围内的值的监视元素,或者最前面的 n 个监视元素(例如,前 5 个等待时间)。示例 4 说明了这些功能的工作方式。
过程
示例
- 示例 1:确定所有连接中用于等待的时间相对于请求总时间的平均值。
- 此示例与前一个示例相似,只不过这次是通过 SQL 来计算等待时间百分比的平均值:
WITH PCTWAIT AS ( SELECT SUM(TOTAL_WAIT_TIME)AS WAIT_TIME, SUM(TOTAL_RQST_TIME)AS RQST_TIME FROM TABLE(MON_GET_CONNECTION(NULL,NULL)) AS METRICS) SELECT WAIT_TIME, RQST_TIME, CASE WHEN RQST_TIME > 0 THEN DEC((FLOAT(WAIT_TIME))/FLOAT(RQST_TIME) * 100,5,2) ELSE NULL END AS WAIT_PCT FROM PCTWAIT运行上述查询的结果将类似于以下内容:WAIT_TIME RQST_TIME WAIT_PCT -------------------- -------------------- -------- 1515 2439 62.11 1 record(s) selected. - 示例 2:对特定服务子类的等待总时间与所选组件处理时间进行比较
- 此示例说明了可以如何将特定类型的组件处理所耗用的时间与用于等待的时间进行比较:
SELECT SUM(TOTAL_WAIT_TIME) AS WAIT, SUM(TOTAL_COMPILE_PROC_TIME) AS COMPILE, SUM(TOTAL_IMPLICIT_COMPILE_PROC_TIME) AS IMP_COMPILE, SUM(TOTAL_SECTION_PROC_TIME) AS SECTION, SUM(TOTAL_COMMIT_PROC_TIME) AS COMMIT, SUM(TOTAL_REORG_PROC_TIME) AS REORG, SUM(TOTAL_RUNSTATS_PROC_TIME) AS RUNSTATS, SUM(TOTAL_ROLLBACK_PROC_TIME) AS ROLLBACK, SUM(TOTAL_LOAD_PROC_TIME) AS LOAD FROM TABLE(MON_GET_SERVICE_SUBCLASS( 'SYSDEFAULTUSERCLASS','SYSDEFAULTSUBCLASS',NULL))运行上述查询的结果将类似于以下内容(为了便于显示,已经分割了该查询的输出行):WAIT COMPILE IMP_COMPILE SECTION COMMIT -------------------- -------------------- -------------------- -------------------- -------------------- 611 1931 0 395 15 REORG RUNSTATS ROLLBACK LOAD -------------------- -------------------- -------------------- -------------------- 0 432 18 0 1 record(s) selected.可以使用所报告的数目来构造一个饼图,以显示与不同处理阶段所耗用时间进行比较的相对等待时间(不包括组件时间为 0)。
- 示例 3:查看耗用的总时间与不同组件中的处理时间相比较而得到的比率
此示例说明了可以如何获得在不同处理阶段(组件)执行操作所耗用的时间相对于该组件中耗用的总时间的概述。下列查询将计算执行实际处理所耗用的时间与特定组件中的耗用总时间相比较而获得的比率(用百分比表示)。
此查询将生成以下输出:WITH PCTPROC AS ( SELECT SUM(TOTAL_SECTION_TIME) AS SECT_TIME, SUM(TOTAL_SECTION_PROC_TIME) AS SECT_PROC_TIME, SUM(TOTAL_COMPILE_TIME) AS COMP_TIME, SUM(TOTAL_COMPILE_PROC_TIME) AS COMP_PROC_TIME, SUM(TOTAL_IMPLICIT_COMPILE_TIME) AS IMP_C_TIME, SUM(TOTAL_IMPLICIT_COMPILE_PROC_TIME) AS IMP_C_PROC_TIME, SUM(TOTAL_COMMIT_TIME) AS COMMIT_TIME, SUM(TOTAL_COMMIT_PROC_TIME) AS COMMIT_PROC_TIME, SUM(TOTAL_ROLLBACK_TIME) AS ROLLBACK_TIME, SUM(TOTAL_ROLLBACK_PROC_TIME) AS ROLLBACK_PROC_TIME, SUM(TOTAL_RUNSTATS_TIME) AS RUNSTATS_TIME, SUM(TOTAL_RUNSTATS_PROC_TIME)AS RUNSTATS_PROC_TIME, SUM(TOTAL_REORG_TIME) AS REORG_TIME, SUM(TOTAL_REORG_PROC_TIME) AS REORG_PROC_TIME, SUM(TOTAL_LOAD_TIME) AS LOAD_TIME, SUM(TOTAL_LOAD_PROC_TIME) AS LOAD_PROC_TIME FROM TABLE(MON_GET_CONNECTION(NULL, -2)) AS METRICS) SELECT CASE WHEN SECT_TIME > 0 THEN DEC((FLOAT(SECT_PROC_TIME) / FLOAT(SECT_TIME)) * 100,5,1) ELSE NULL END AS SECT_PROC_PCT, CASE WHEN COMP_TIME > 0 THEN DEC((FLOAT(COMP_PROC_TIME) / FLOAT(COMP_TIME)) * 100,5,1) ELSE NULL END AS COMPILE_PROC_PCT, CASE WHEN IMP_C_TIME > 0 THEN DEC((FLOAT(IMP_C_PROC_TIME) / FLOAT(IMP_C_TIME)) * 100,5,1) ELSE NULL END AS IMPL_COMPILE_PROC_PCT, CASE WHEN ROLLBACK_TIME > 0 THEN DEC((FLOAT(ROLLBACK_PROC_TIME) / FLOAT(ROLLBACK_TIME)) * 100,5,1) ELSE NULL END AS ROLLBACK_PROC_PCT, CASE WHEN COMMIT_TIME > 0 THEN DEC((FLOAT(COMMIT_PROC_TIME) / FLOAT(COMMIT_TIME)) * 100,5,1) ELSE NULL END AS COMMIT_PROC_PCT, CASE WHEN RUNSTATS_TIME > 0 THEN DEC((FLOAT(RUNSTATS_PROC_TIME) / FLOAT(RUNSTATS_TIME)) * 100,5,1) ELSE NULL END AS RUNSTATS_PROC_PCT, CASE WHEN REORG_TIME > 0 THEN DEC((FLOAT(REORG_PROC_TIME) / FLOAT(REORG_TIME)) * 100,5,1) ELSE NULL END AS REORG_PROC_PCT, CASE WHEN LOAD_TIME > 0 THEN DEC((FLOAT(LOAD_PROC_TIME) / FLOAT(LOAD_TIME)) * 100,5,1) ELSE NULL END AS LOAD_PROC_PCT FROM PCTPROCSECT_PROC_PCT COMPILE_PROC_PCT IMPL_COMPILE_PROC_PCT ROLLBACK_PROC_PCT COMMIT_PROC_PCT RUNSTATS_PROC_PCT REORG_PROC_PCT LOAD_PROC_PCT ------------- ---------------- --------------------- ----------------- --------------- ----------------- -------------- ------------- 57.6 0.1 - 96.9 95.6 0.0 71.1 84.6 1 record(s) selected.用图形来表示此数据时,看起来可能与 图 1 中所显示的内容相似:图 1. 用耗用总时间的百分比来表示的组件处理时间 
- 示例 4:将“耗用时间”监视元素排名
- 在前面的示例中,所显示的所有监视元素都是在用于查询的 SQL 中显式指定的;在查询结果中,每个监视元素都显示在它自己的那一列中。但是,有时候您可能不知道要检查哪些“耗用时间”监视元素(例如,您想查看前 10 个等待时间监视元素,或者只想查看非零的“耗用时间”监视元素)。