ORACLE 执行计划2

SQL>set timing on                                   --显示Elapsed执行总时间。区别于set time on

方式一:
SQL>set autotrace on/off                         --显示结果集、执行计划和统计信息(执行SQL)
SQL>set autotrace traceonly                    --显示执行计划和统计信息, 不显示结果集(执行SQL)
SQL>set autotrace traceonly explain        --只显示执行计划(不执行SQL)
SQL>set autotrace traceonly statistics     --只显示统计信息(不执行SQL)
SQL>SELECT * FRM T_BD_ACCOUNTVIEW;

方式二:
SQL>explan plan for select * from t_bd_accountview;
SQL>SELECT plan_table_output FROM table(DBMS_XPLAN.DISPLAY('t_bd_accountview'));
SQL>SELECT * FROM table(dbms_xplan.display);

方式三:
SQL>alter session set SQL_TRACE=true;
SQL>SELECT sid, serial#, username from v$session where username = 'xxxx'
SQL>exec dbms_system.set_SQL_TRACE_in_session(sid, serial#,true/false)
--跟踪其它用户
SQL>alter session set events '10046 trace name context forever, level 8')   //or '10046 trace name context off'
SQL>exec dbms_system.set_ev(sid, serial#,10046, 0-8(level), username);

执行计划中的字段解释:
ID:一个序号,但不是执行的先后顺序。执行的先后顺序根据缩进来判断
Operation:当前操作的内容
Rows:当前操作的cardinality, Oracle根据CBO估算当前操作返回的结果集
Cost(CPU):Oracle计算出来的一个数值(代价), 用于说明SQL执行的代价
Time: oracle估计当前操作的时间
谓词说明:
Access:影响数据的访问路径(表还是索引)
Filter:只起过滤数据的作用。

explain plan各列的含义:
ID_PLUS_EXP
PARENT_ID_PLUS_EXP
PLAN_PLUS_EXP
OBJECT_NODE_PLUS_EXP

Statistics各列含义:
db block gets         --从buffer cache中读取的block数量
constient gets      --从buffer cache中读取的undo数据的block数量
                                 ---because of查询过程中,由于其它回话对数据块进行了操作,而对所要查询的块有了修改。读取其以保证一致性。
physical reads     --从磁盘读取的block的数量
redo size              --DML生成的redo的大小 ( 重做数——执行SQL的过程中,产生的重做日志的大小
sorts(memory)     --在内存执行的排序量
sorts(dis)             --在磁盘执行的排序量

逻辑读:db block gets + constient gets
物理读:physical reads

缓冲区使用的命中率 = 1 - 物理读 / (缓冲块读+缓冲undo读)
SQL>SELECT name, value FROM v$sysstat WHERE name IN('db block gets', 'consistent gets', 'physical reads');
如果buffer cache的命中率在90%以上,否则需要增加数据缓冲区的大小

动态分析
如果执行计划中出现提示:
--dynamic sampling used for the statement
表示用户使用了动态采样技术CBO模式下。===>从而推断这个表可能没有做过分析,可有导致两种现象:
1.该表没有做过分析,CBO采用动态采样分析数据,也可以得出正确的执行计划
2.分析信息过旧,CBO不会动态采样,采用旧的信息,从而导致错误的执行计划。

你可能感兴趣的:(ORACLE 执行计划2)