ORACLE数据库查看执行计划

  • 时间:
  • 浏览:2

你你类式行是你你类式条一段话的的hash值,亲戚亲戚大伙知道ORACLE对每第根小ORACLE一段话产生的执行计划插进SHARE POOL中间,第一主次经过硬解析,产生hash值。下次再执行时比较hash值,愿因相同就不需要执行硬解析。

类式:

Id: 执行序列,但都是执行的先后顺序。执行的先后根据Operation缩进来判断(采用最右最上最先执行的原则看层次关系,在同一级愿因某个动作那么 子ID就最先执行。一般按缩进长度来判断,缩进最大的最先执行,愿因有2行缩进一样,那么 就先执行中间的。)

                  3:磁盘排序

2> COST

  怪怪的类式60 46,在此略过、

愿因在执行计划中含如下提示:

由上至下:在执行计划中一般中含多个节点,相同级别(或并列)的节点,靠上的优先执行,靠下的后执行

db block gets 、 consistent gets 、 physical reads这三者的关系可不能否 概括为:逻辑读指的是ORACLE从内存读到的数据块块数量,一般来说是:

通过下面或多或少系统视图,但会 你看得人或多或少零散的执行计划的相关信息,有兴趣一段话可不能否 多去研究一下。

                  2:全表扫描

6 利用60 53事件

Method for looking up a single key value via a unique index. always returns a single value, You must supply AT LEAST the leading column of the index to access data via the index.

1.Full Table Scan (FTS) 全表扫描

执行下面命令:tkprof D:\ORACLE\PRODUCT\10.2.0\DB_1\RDBMS\TRACE/wgods_ora_3940.trc h:\out.txtoutputfile explain=etl/etl

SET AUTOT[RACE] {ON | OFF | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]

5 利用60 46事件

    Operation:当前操作的内容。

416 bytes received via SQL*Net from client  客户端向SQL*Net发送了416字节的数据。

那么 此时如可查看相关信息?不管你在SQL*PLUS抑或PL/SQL DEVELOPER工具中间执行中间脚本却说看得人只有有哪些信息,但会 你通过下面脚本查询到trace日志信息

(2) 愿因表分析过,但会 分析信息过旧,这时CBO就不需要在使用动态采样,却说使用有有哪些旧的分析数据,从而愿因愿因错误的执行计划。

四、表访问法律法子

4:SQL_TRACE可不能否 作为参数在全局启用,也可不能否 通过命令形式在具体SESSION启用

参考文档:SQLPlus User’s Guide and Reference Release 11.1

基于ORACLE的应用系所以统性能问题,是由应用系统SQL性能低劣引起的,所以,SQL的性能优化怪怪的要,分析与优化SQL的性能亲戚亲戚大伙一般通过查看该SQL的执行计划,本文就如可看懂执行计划,以及如可通过分析执行计划对SQL进行优化做相应说明。

TKPROF的帮助信息如下

Scans all the block in the index, Rows are not returned in sorted order, Introduced in 7.3 and requires V733_PLANS_ENABLED=TRUE and CBO, may be hinted using INDEX_FFS hint, uses multiblock i/o, can be executed in parallel, can be used to access second column of concatenated indexes. This is because we are selecting all of the index.

SQL>

2.Index Lookup 索引扫描

执行中间命令后,可不能否 查看生成的文本文件

名词解释:

总是实现唯一性扫描

-dynamic sampling used for the statement

公式:COST=(Single Block I/O COST + MultiBlock I/O Cost + CPU Cost)/ Sreadtim

通过唯一索引查找1个 多数值总是返回单个ROWID,愿因占据 UNIQUE或PRIMARY KEY约束(它保证了一段话只存取单行一段话),ORACLE

错误等。

---------------------------------------------------

    Name:操作对象

所以人以为PL/SQL的执行计划只有看得人基数、优化器、耗费等基本信息,随便说说你你类式可不能否 在PL/SQL工具中间设置的。可不能否 看得人所以其它信息,如下所示

1.执行顺序

3: 在SQL*PLUS下(或多或少命令在PL/SQL下无效)执行如下命令:

注意:PL/SQL Developer 工具不需要全部支持所有的SQL*Plus命令,像SET AUTOTRACE ON 就那么 ,在PL/SQL Developer工具下执行此命令会报错

这提示用户CBO当前使用的技术,时时需户在分析计划时考虑到有有哪些因素。 当跳出你你类式提示,说明当前表使用了动态采样。亲戚亲戚大伙从而推断你你类式表愿因那么 做过分析。

3.Rowid 物理ID扫描

执行计划:第根小查询一段话在ORACLE中的执行过程或访问路径的描述。

COST那么 单位,是1个 多相对值,是SQL以CBO法律法子解析执行计划时,供ORACLE来评估CBO成本,选取执行计划用的。那么 明确的含义,但会 在对比是就非常有用。

    在谓词中主要注意access,要考虑谓词的条件,使用的访问路径不是正确。

Cannot SET AUTOTRACE

consistent gets + db block gets. 当在内存中找只有所时需的数据块一段话,就时需从磁盘中获取,于是就产生了物理读。

三、看懂执行计划

                  1:在数据库高速缓存中不占据 有有哪些块。

    Time:Oracle 估计当前操作的时间。

使用1个 多索引存取多行数据,在唯一索引上使用索引范围扫描的典型请况是在谓词(WHERE 限制条件)中使用了范围操作符号(如>, < <>, >=, <=,BWTEEN)

当然,你在PL/SQL工具中也可不能否 通过它提供的功能来查看执行顺序。如下图所示:

index unique scan --索引唯一扫描

2091 bytes sent via SQL*Net to client     从SQL*Net向客户端发送了2091字节的数据

DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION来完成。

index full scan --索引全局扫描

This is the quickest access method available.Oracle retrieves the specified block and extracts the rows it is interested in. --Rowid扫描是最快的访问数据法律法子

这里会跳出你你类式请况:

redo size              DML生成的redo的大小

------------

4 - access("A"."EMPNO" = "B"."MGR")

index range scan --索引局部扫描

    Bytes:表示执行该步骤后返回的字节数。

recursive calls           递归调用

4.3跟踪其它用户的系统线程,在所以却说亲戚亲戚大伙时需跟踪其它用户的系统线程,而都是当前用户,可不能否 通过ORACLE提供的系统包

Full index scans are only available in the CBO as otherwise we are unable to determine whether a full scan would be a good idea or not. We choose an index Full Scan when we have statistics that indicate that it is going to be more efficient than a Full table scan and a sort. For example we may do a Full index scan when we do an unbounded scan of an index and want the data to be ordered in the index order.

1> Plan hash Value

二、如可查看执行计划

提示:通过在全局启用SQL_TRACE, 亲戚亲戚大伙可不能否 跟踪到所有后台系统线程的活动,所以在文档中的抽象说明,通过跟踪文件的实时变化,亲戚亲戚大伙可不能否 清晰的看得人各个系统线程间的紧密协调。

Predicate Information (identified by operation id):

从右向左:在某个节点下还占据 多个子节点,先从最靠右的子节点刚开始了了执行。

5、 动态分析

There are 5 methods of index lookup:

sorts (disk)             在磁盘执行的排序量

1: 在PL/SQL下按F5查看执行计划。第三方工具toad等。

physical reads           物理读 却说从磁盘上读取数据块的数量。其产生的主要愿因是:

2 - filter("B"."MGR" IS NOT NULL)

4.1 在全局启用,在参数文件(pfile/spfile)中指定SQL_TRACE =true,在全局启用SQL_TRACE都是愿因所有系统线程活动被跟踪,包括后台系统线程以及用户系统线程,通常会愿因比较严重的性能问题,所以在生产环境要谨慎使用。

index fast full scan --索引快速全局扫描,不带order by请况下常占据

    Rows:也却说10g版本却说的Cardinality(基数),Oracle估计当前操作的返回结果集行数。

4.2在当前SESSION级别设置,通过跟踪当前系统线程可不能否 发现当前操作的后台数据库递归活动(这在研究数据库新价值形式时尤其有效),研究SQL执行时,发现后台

db block gets           从buffer cache中读取的block的数量当前请求的块数目,当前模式块意思却说在操作中正好提取的块数目,而都是在一致性读的请况下而产生的正常请况下,1个 多查询提取的块是在查询查询刚开始了了的那个时间点上占据 的数据库,当前块是在你你类式却说占据 数据块,而都是你你类式时间点而愿因却说的的数据块数目。

    Cost(CPU):表示执行到该步骤的1个 多执行成本,用于说明SQL执行的代价。

SQL> SET AUTOTRACE ON;

3> 对中间执行计划列字段的解释:

    Access: 表示你你类式谓词条件的值愿因影响数据的访问路劲(全表扫描还是索引)。

2.执行计划中字段解释

4.谓词说明:

Note

consistent gets          从buffer cache中读取的undo数据的block的数量数据请求总数在回滚段Buffer中的数据一致性读所时需的数据块,,这里的概念是在你解决你你你类式操作的时侯 时需在一致性读请况上解决多个块,有有哪些块产生的主要愿因愿因你在查询过程中,愿因其它会话对数据 块进行操作,而对所要查询的块有了修改,但会 愿因亲戚亲戚大伙的查询是在有有哪些修改却说调用的,所要时需对回滚 段中的数据块的前映像进行查询,以保证数据的一致性。那但会 你产生了一致性读。

执行顺序的原则是:由上至下,从右向左

一、有哪些是执行计划(explain plan)

index skip scan --索引跳跃扫描,where条件列是非索引的前提请况下常占据

    Filter:表示谓词条件的值不需要影响数据的访问路劲,只起过滤的作用。

7 系统视图

3.具体内容查看

(1) 愿因表那么 做过分析,那么 CBO可不能否 通过动态采样的法律法子来获取分析数据,也可不能否 愿因正确的执行计划。

参考文档:SQLPlus User’s Guide and Reference Release 11.1

sorts (memory)           在内存执行的排序量

Index range scan is a method for accessing a range values of a particular column. AT LEAST the leading column of the index must be supplied to access data via the index. Can be used for range operations (e.g. > < <> >= <= between) .

Index skip scan finds rows even if the column is not the leading column of a concatenated index. It skips the first column(s) during the search.

2: 在SQL*PLUS(PL/SQL的命令窗口和SQL窗口均可)下执行下面步骤