2:全表扫描 3:磁盘排序 redo size DML生成的redo的大小 sorts (memory) 在内存执行的排序量 sorts (disk) 在磁盘执行的排序量 2091 bytes sent via SQL*Net to client 从SQL*Net向客户端发送了2091字节的数据 416 bytes received via SQL*Net from client 客户端向SQL*Net发送了416字节的数据。 参考文档:SQLPlus User's Guide and Reference Release 11.1
clip_image018
db block gets 、 consistent gets 、 physical reads这三者的关系可以概括为:逻辑读指的是ORACLE从内存读到的数据块块数量,一般来说是: consistent gets + db block gets. 当在内存中找不到所需要的数据块的话,就需要从磁盘中获取,于是就产生了物理读。
3.具体内容查看 1> Plan hash Value 这一行是这一条语句的的hash值,我们知道ORACLE对每一条ORACLE语句产生的执行计划放在SHARE POOL里面,第一次要经过硬解析,产生hash值。下次再执行时比较hash值,如果相同就不会执行硬解析。 2> COST
COST没有单位,是一个相对值,是SQL以CBO方式解析执行计划时,供ORACLE来评估CBO成本,选择执行计划用的。没有明确的含义,但是在对比是就非常有用。 公式:COST=(Single Block I/O COST + MultiBlock I/O Cost + CPU Cost)/ Sreadtim
3> 对上面执行计划列字段的解释: Id: 执行序列,但不是执行的先后顺序。执行的先后根据Operation缩进来判断(采用最右最上最先执行的原则看层次关系,在同一级如果某个动作没有子ID就最先执行。一般按缩进长度来判断,缩进最大的最先执行,如果有2行缩进一样,那么就先执行上面的。) Operation:当前操作的内容。 Name:操作对象 Rows:也就是10g版本以前的Cardinality(基数),Oracle估计当前操作的返回结果集行数。 Bytes:表示执行该步骤后返回的字节数。 Cost(CPU):表示执行到该步骤的一个执行成本,用于说明SQL执行的代价。 Time:Oracle 估计当前操作的时间。
4.谓词说明: Predicate Information (identified by operation id): --------------------------------------------------- 2 - filter("B"."MGR" IS NOT NULL) 4 - access("A"."EMPNO" = "B"."MGR") Access: 表示这个谓词条件的值将会影响数据的访问路劲(全表扫描还是索引)。 Filter:表示谓词条件的值不会影响数据的访问路劲,只起过滤的作用。 在谓词中主要注意access,要考虑谓词的条件,使用的访问路径是否正确。
5、 动态分析 如果在执行计划中有如下提示: Note ------------ -dynamic sampling used for the statement 这提示用户CBO当前使用的技术,需要用户在分析计划时考虑到这些因素。 当出现这个提示,说明当前表使用了动态采样。我们从而推断这个表可能没有做过分析。 这里会出现两种情况: (1) 如果表没有做过分析,那么CBO可以通过动态采样的方式来获取分析数据,也可以或者正确的执行计划。 (2) 如果表分析过,但是分析信息过旧,这时CBO就不会在使用动态采样,而是使用这些旧的分析数据,从而可能导致错误的执行计划。 上一页 [1] [2] [3] [4] [5] [6] [7] [8] 下一页
|