执行计划中各字段各模块描述

执行计划中各字段各模块描述

        在SQL语句的执行计划中,包含很多字段项和很多模块,其不同字段代表了不同的含义且在不同的情形下某些字段、模块显示或不显示,下
面的描述给出了执行计划中各字段的含义以及各模块的描述。

一、执行计划中各字段的描述
  1、基本字段(总是可用的)
              Id                  执行计划中每一个操作(行)的标识符。如果数字前面带有星号,意味着将在随后提供这行包含的谓词信息
              Operation    对应执行的操作。也叫行源操作
              Name              操作的对象名称
 
  2、查询优化器评估信息
              Rows(E-Rows)              预估操作返回的记录条数
              Bytes(E-Bytes)          预估操作返回的记录字节数
              TempSpc                        预估操作使用临时表空间的大小
              Cost(%CPU)                  预估操作所需的开销。在括号中列出了CPU开销的百分比。注意这些值是通过执行计划计算出来的。
                                                      换句话说,父操作的开销包含子操作的开销
              Time                              预估执行操作所需要的时间(HH:MM:SS)
 
  3、分区(仅当访问分区表时下列字段可见)
      Pstart              访问的第一个分区。如果解析时不知道是哪个分区就设为KEY,KEY(I),KEY(MC),KEY(OR),KEY(SQ)
      Pstop                访问的最后一个分区。如果解析时不知道是哪个分区就设为KEY,KEY(I),KEY(MC),KEY(OR),KEY(SQ)
 
  4、并行和分布式处理(仅当使用并行或分布式操作时下列字段可见)
              Inst              在分布式操作中,指操作使用的数据库链接的名字
              TQ                  在并行操作中,用于从属线程间通信的表队列
              IN-OUT          并行或分布式操作间的关系
              PQ Distrib  在并行操作中,生产者为发送数据给消费者进行的分配
 
  5、运行时统计(当设定参数statistics_level为all或使用gather_plan_statistics提示时,下列字段可见)
              Starts            指定操作执行的次数
              A-Rows            操作返回的真实记录数
              A-Time            操作执行的真实时间(HH:MM:SS.FF)
 
  6、I/O 统计(当设定参数statistics_level为all或使用gather_plan_statistics提示时,下列字段可见)
              Buffers          执行期间进行的逻辑读操作数量
              Reads              执行期间进行的物理读操作数量
              Writes            执行期间进行的物理写操作数量               
 
  7、内存使用统计
              OMem                  最优执行所需内存的预估值
              1Mem                  一次通过(one-pass)执行所需内存的预估值
              0/1/M                最优/一次通过/多次通过(multipass)模式操作执行的次数
              Used-Mem          最后一次执行时操作使用的内存量
              Used-Tmp          最后一次执行时操作使用的临时空间大小。这个字段必须扩大1024倍才能和其他衡量内存的字段一致(比如,32k意味着32MB)
              Max-Tmp            操作使用的最大临时空间大小。这个字段必须扩大1024倍才能和其他衡量内存的字段一致(比如,32k意味着32MB)

二、执行计划中各模块的描述与举例
 
  1、预估的执行计划中的各字段与模块

SQL> explain plan for                                                                                                                                                                                                     
  select * from emp e,dept d                                                                                                                                                                                 
  where e.deptno=d.deptno                                                                                                                                                                                       
  and e.ename='SMITH';                                                                                                                                                                                             
                                                                                                                                                                                                                       
Explained.                                                                                                                                                                                                                           
                                                                                                                                                                                                                                 
SQL> set linesize 180                                                                                                                                                                                                     
SQL> set pagesize 0                                                                                                                                                                                                         
SQL> select * from table(dbms_xplan.display(null,null,'advanced'));    --使用dbms_xplan.display函数获得语句的执行计划         
Plan hash value: 351108634                                                                                      --SQL语句的哈希植                                                                   
                                                                                                                                                                                                                                               
----------------------------------------------------------------------------------------                               
| Id  | Operation                                      | Name      | Rows  | Bytes | Cost (%CPU)| Time                                                                     
----------------------------------------------------------------------------------------                                                                 
  0 | SELECT STATEMENT                                            1 |    117 |          (0)| 00:00:01 |                                                               
  1 |  NESTED LOOPS                                                  1 |    117 |          (0)| 00:00:01 |                                                               
|*  2 |    TABLE ACCESS FULL                  | EMP              1 |      87 |          (0)| 00:00:01 |                                                               
  3 |    TABLE ACCESS BY INDEX ROWID| DEPT            1 |      30 |          (0)| 00:00:01 |                                                               
|*  4 |      INDEX UNIQUE SCAN                | PK_DEPT |        1 |                    (0)| 00:00:01 |                                                               
----------------------------------------------------------------------------------------                                                                 
                                                                                                                                                                                                                                               
Query Block Name / Object Alias (identified by operation id):  --这部分显示的为查询块名和对象别名                                               
-------------------------------------------------------------                                                                                                                       
                                                                                                                                                                                                                                               
    1 - SEL$1                                      --SEL$为select 的缩写,位于块1,相应的还有DEL$,INS$,UPD$等                                                               
    2 - SEL$1 / E@SEL$1                  --E@SEL$1,对应到执行计划中的操作ID为2上,即在表E上的查询,E为别名,下面类同                         
    3 - SEL$1 / D@SEL$1                                                                                                                                                                                                   
    4 - SEL$1 / D@SEL$1                                                                                                                                                                                                   
                                                                                                                                                                                                                                               
Outline Data                                      --提纲部分,这部分将执行计划中的图形化方式以文本形式来呈现,即转换为提示符方式                     
-------------                                                                                                                                                                                                                       
                                                                                                                                                                                                                                               
                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                               
Predicate Information (identified by operation id): --谓词信息部分,在执行计划中ID带有星号的每一行均对应到下面中的一行     
---------------------------------------------------                                                                                                                                           
                                                                                                                                                                                                                                               
    2 - filter("E"."ENAME"='SMITH')                                                                                                                                                                           
    4 - access("E"."DEPTNO"="D"."DEPTNO")                                                                                                                                                               
                                                                                                                                                                                                                                               
Column Projection Information (identified by operation id):  --执行时每一步骤所返回的列,下面的不同步骤返回了不同的列       
-----------------------------------------------------------                                                                                                                           
                                                                                                                                                                                                                                               
    1 - (#keys=0) "E"."EMPNO"[NUMBER,22], "E"."ENAME"[VARCHAR2,10],                                                                                                           
            "E"."JOB"[VARCHAR2,9], "E"."MGR"[NUMBER,22], "E"."HIREDATE"[DATE,7],                                                                                         
            "E"."SAL"[NUMBER,22], "E"."COMM"[NUMBER,22], "E"."DEPTNO"[NUMBER,22],                                                                                       
            "D"."DEPTNO"[NUMBER,22], "D"."DNAME"[VARCHAR2,14], "D"."LOC"[VARCHAR2,13]                                                                               
    2 - "E"."EMPNO"[NUMBER,22], "E"."ENAME"[VARCHAR2,10], "E"."JOB"[VARCHAR2,9],                                                                                 
            "E"."MGR"[NUMBER,22], "E"."HIREDATE"[DATE,7], "E"."SAL"[NUMBER,22],                                                                                           
            "E"."COMM"[NUMBER,22], "E"."DEPTNO"[NUMBER,22]                                                                                                                                     
    3 - "D"."DEPTNO"[NUMBER,22], "D"."DNAME"[VARCHAR2,14], "D"."LOC"[VARCHAR2,13]                                                                               
    4 - "D".ROWID[ROWID,10], "D"."DEPTNO"[NUMBER,22]                                                                                                                                         
                                                                                                                                                                                                                                               
Note      --注释与描述部分,下面的描述中给出了本次SQL语句使用了动态采样功能                                                                                               
-----                                                                                                                                                                                                                                       
    - dynamic sampling used for this statement                                                                                                                                                     
                                                                                                                                                                                                                                               
58 rows selected.                                                                                                                                                                                                             

                                                                                                                                                                                               
  2、实际执行计划中的各字段与模块     

SQL> select *                  --注意此处增加了提示gather_plan_statistics并且该语句被执行                   
  from emp e,dept d                                                                                                                                                                                                   
  where e.deptno=d.deptno                                                                                                                                                                                       
  and e.ename='SMITH';                                                                                                                                                                                             
                                                                                                                                                                                                                                               
7369 SMITH          CLERK                    7902 17-DEC-80              800                                      20                20 RESEARCH            DALLAS   
                                                                                                                                                                                                                                               
SQL> select * from table(dbms_xplan.display_cursor(null,null,'iostats last')); --使用display_cursor获取实际的执行计划       
                                                                                                                                                                                                                                               
SQL_ID  fpx7zw59f405d, child number 0                          --这部分给出了SQL语句的SQL_ID,子游标号以及原始的SQL语句                             
-------------------------------------                                                                                                                                                                       
select * from emp e,dept d where e.deptno=d.deptno and                                                                       
e.ename='SMITH'                                                                                                                                                                                                                 
                                                                                                                                                                                                                                               
Plan hash value: 351108634                          --SQL 语句的哈希值                                                                                                                             
                                                                              --SQL语句的执行计划,可以看到下面显示的字段一部分不同于预估执行计划中的字段           
-----------------------------------------------------------------------------------------------------------                           
| Id  | Operation                                      | Name      | Starts | E-Rows | A-Rows |    A-Time    | Buffers | Reads                         
-----------------------------------------------------------------------------------------------------------                           
  1 |  NESTED LOOPS                                                    1 |          1 |          1 |00:00:00.01 |          10 |          1 |                         
|*  2 |    TABLE ACCESS FULL                  | EMP                1 |          1 |          1 |00:00:00.01 |            8 |          0 |                         
  3 |    TABLE ACCESS BY INDEX ROWID| DEPT              1 |          1 |          1 |00:00:00.01 |            2 |          1 |                         
|*  4 |      INDEX UNIQUE SCAN                | PK_DEPT |          1 |          1 |          1 |00:00:00.01 |            1 |          1 |                         
-----------------------------------------------------------------------------------------------------------                           
                                                                                                                                                                                                                                               
Predicate Information (identified by operation id):                                                                                                                                         
---------------------------------------------------                                                                                                                                           
                                                                                                                                                                                                                                               
    2 - filter("E"."ENAME"='SMITH')                                                                                                                                                                           
    4 - access("E"."DEPTNO"="D"."DEPTNO")                                                                                                                                                               
                                                                                                                                                                                                                                               
Note                                                                                                                                                                                                                                       
-----                                                                                                                                                                                                                                       
    - dynamic sampling used for this statement                                                                                                                                                     
                                                                                                                                                                                                                                               
                                                                                                                                                                                                                                               
26 rows selected.                                                                                                                                                                                                             

                                                                                                                                                                                                 
三、总结

由上可知,在不同的情形下可以获得执行计划的不同信息,而不同信息则展现了SQL语句对应的不同情况,因此应根据具体的情形具体分析。         
       
转自:http://blog.csdn.net/leshami/article/details/6860007
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值