确定在执行 SQL 语句期间耗用时间的位置

检索活动级别的耗用时间信息的一个示例是查看特定 SQL 语句的“耗用时间”监视元素。可以使用 MON_GET_PKG_CACHE_STMT 表函数来检索此信息。

关于此任务

此任务显示了一个示例,用来说明如何检索有关程序包高速缓存中的 SQL 语句的所选耗用时间详细信息。
注:
  • 为程序包高速缓存中的给定语句报告的耗用时间指标,是执行该语句的所有次数的耗用时间指标的总计。
  • 这些查询的输出中所显示的值只是为了便于说明,不应将它们理解为表示您在自己的系统中可能看到的内容。

过程

  1. 明确阐述一个 SQL 语句,它使用 MON_GET_PKG_CACHE_STMT 表函数来检索有关程序包高速缓存中的语句的信息。
    例如,假定您想确定相对于语句的执行总时间的等待总时间。用于检索此信息的查询可能为如下所示:
    SELECT SUM(STMT_EXEC_TIME) AS TOTAL_EXEC_TIME,    
           SUM(TOTAL_ACT_WAIT_TIME) AS TOTAL_WAIT_TIME,
           EXECUTABLE_ID
    FROM TABLE(MON_GET_PKG_CACHE_STMT ( NULL, NULL, NULL, -2)) AS T         
    WHERE STMT_EXEC_TIME <> 0  
    GROUP BY EXECUTABLE_ID
    ORDER BY TOTAL_EXEC_TIME DESC
  2. 运行此查询。
    结果可能与下列输出相似:
    TOTAL_EXEC_TIME      TOTAL_WAIT_TIME      EXECUTABLE_ID
    -------------------- -------------------- -------------------------------------------------------------------
                    9021                 9021 x'0100000000000000320000000000000000000000020020091111120320140000'
                    3017                  372 x'0100000000000000030000000000000000000000020020091111115438062000'
                     591                    0 x'0100000000000000010000000000000000000000020020091111115252265000'
                     203                  192 x'0100000000000000270000000000000000000000020020091111115936750000'
                     142                    0 x'01000000000000002B0000000000000000000000020020091111115944000000'
                     111                   48 x'0100000000000000070000000000000000000000020020091111115441359002'
                     108                   35 x'01000000000000000B0000000000000000000000020020091111115441750000'
                      55                    0 x'01000000000000000D0000000000000000000000020020091111115442062000'
                      50                    0 x'01000000000000000C0000000000000000000000020020091111115441921000'
                      38                    0 x'0100000000000000260000000000000000000000020020091111115936609003'
                      35                    2 x'01000000000000000A0000000000000000000000020020091111115441609000'
                      35                   35 x'0100000000000000130000000000000000000000020020091111115442593001'
                      33                    0 x'0100000000000000120000000000000000000000020020091111115442531000'
                      32                    0 x'0100000000000000240000000000000000000000020020091111115936578000'
                      29                    0 x'01000000000000000E0000000000000000000000020020091111115442203000'
                      24                   23 x'0100000000000000040000000000000000000000020020091111115440640000'
                      24                    0 x'0100000000000000110000000000000000000000020020091111115442484003'
                      20                    0 x'0100000000000000300000000000000000000000020020091111120241828000'
                      15                    0 x'0100000000000000050000000000000000000000020020091111115440984000'
                      14                    0 x'0100000000000000080000000000000000000000020020091111115441437000'
                      13                   13 x'01000000000000000F0000000000000000000000020020091111115442406001'
                       4                    0 x'0100000000000000100000000000000000000000020020091111115442484001'
                       3                    0 x'0100000000000000180000000000000000000000020020091111115442828000'
                       3                    3 x'01000000000000001F0000000000000000000000020020091111115936515000'
                       3                    0 x'0100000000000000290000000000000000000000020020091111115943968001'
                       2                    0 x'0100000000000000150000000000000000000000020020091111115442656001'
                       2                    0 x'0100000000000000170000000000000000000000020020091111115442750000'
                       1                    0 x'0100000000000000160000000000000000000000020020091111115442734000'
                       1                    0 x'0100000000000000280000000000000000000000020020091111115937000001'
                       1                    0 x'01000000000000002A0000000000000000000000020020091111115943984000'
    
      30 record(s) selected.

结果

此时,您可以再次使用 MON_GET_PKG_CACHE_STMT 表函数来检索您特别感兴趣的任何语句的语句文本。例如,可以使用下列查询来确定以上所显示的具有最长等待时间的语句:
SELECT VARCHAR(STMT_TEXT, 80) AS STMT_TEXT 
FROM TABLE(MON_GET_PKG_CACHE_STMT(NULL,x'0100000000000000320000000000000000000000020020091111120320140000',NULL,-2)) 
     AS T
上述查询的输出将类似于以下内容:
STMT_TEXT
---------------------------------------------------------------------------------
UPDATE EMPLOYEE SET BONUS=10000 WHERE PERF_RATING=1
  1 record(s) selected.