暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 并行查询实际执行时间

askTom 2015-12-01
225

问题描述

嗨,汤姆,

我需要一些关于actual execution time/steps的查询。
我一直在用DBMS_XPLAN.DISPLAY_CURSOR用于标识正常查询的实际执行时间的函数。

但是,对于具有并行提示或DOP的查询,我需要相同的结果。
如果可能的话,如果您能提供一些关于如何获得并行查询的单个并行线程执行时间的信息,我也很感激。

我在下面的LiveSQL链接中提供了一个示例代码。
https://livesql.oracle.com/apex/livesql/file/content_CIV7L7MH1LNRHYMRIRM62HUAQ.html

致以问候,
阿迪蒂亚贾拉

专家解答

我不太明白你的意思。您的方法仍然适用于并行查询,如

SQL> create table t as
  2  select rownum x, rownum y
  3  from ( select 1 from dual connect by level <= 10000 ) ,
  4       (  select 1 from dual connect by level <= 10000 ) ;

Table created.

SQL> select /*+ parallel(t) gather_plan_statistics */ mod(x,10), count(*) from t group by  mod(x,10);

 MOD(X,10)   COUNT(*)
---------- ----------
         7   10000000
         0   10000000
         2   10000000
         8   10000000
         9   10000000
         4   10000000
         5   10000000
         3   10000000
         1   10000000
         6   10000000

10 rows selected.

Elapsed: 00:00:23.65

SQL> @exp

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------
--------------------
SQL_ID  gf1nfuftvfy3z, child number 0
-------------------------------------
select /*+ parallel(t) gather_plan_statistics */ mod(x,10), count(*)
from t group by  mod(x,10)

Plan hash value: 129087698

--------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                | Name     | Starts | E-Rows | A-Rows |   A-Time   | Buffers |  OMem |  1Mem | Used-Mem |
--------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT         |          |      1 |        |     10 |00:00:18.47 |       5 |       |       |          |
|   1 |  PX COORDINATOR          |          |      1 |        |     10 |00:00:18.47 |       5 |       |       |          |
|   2 |   PX SEND QC (RANDOM)    | :TQ10001 |      0 |     99M|      0 |00:00:00.01 |       0 |       |       |          |
|   3 |    HASH GROUP BY         |          |      0 |     99M|      0 |00:00:00.01 |       0 |  1600K|  1600K|          |
|   4 |     PX RECEIVE           |          |      0 |     99M|      0 |00:00:00.01 |       0 |       |       |          |
|   5 |      PX SEND HASH        | :TQ10000 |      0 |     99M|      0 |00:00:00.01 |       0 |       |       |          |
|   6 |       HASH GROUP BY      |          |      0 |     99M|      0 |00:00:00.01 |       0 |  1600K|  1600K| 1210K (0)|
|   7 |        PX BLOCK ITERATOR |          |      0 |    100M|      0 |00:00:00.01 |       0 |       |       |          |
|*  8 |         TABLE ACCESS FULL| T        |      0 |    100M|      0 |00:00:00.01 |       0 |       |       |          |
--------------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   8 - access(:Z>=:Z AND :Z<=:Z)

Note
-----
   - Degree of Parallelism is 8 because of table property


30 rows selected.



如果您正在查找*每个*并行从属会话的信息,则需要探测V$视图以收集该信息

V$PX_过程
V$PX_过程_SYSSTAT
V$PX_过程_TRACE
V$PX_SESSION
V$PX_SESTAT

希望这个能帮上忙
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论