ORACLE数据库查看执行计划

  • 时间:
  • 浏览:0
  • 来源:uu快3app_uu快3预测苹果

Predicate Information (identified by operation id):

提示:通过在全局启用SQL_TRACE, 大家里能 跟踪到所有后台守护tcp连接的活动,后来 后来 在文档中的抽象说明,通过跟踪文件的实时变化,大家里能 清晰的想看 各个守护tcp连接间的紧密协调。

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

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

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

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

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

四、表访问措施

3> 对上边执行计划列字段的解释:

3.Rowid 物理ID扫描

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

SQL> SET AUTOTRACE ON;

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

注意:PL/SQL Developer 工具不须全版支持所有的SQL*Plus命令,像SET AUTOTRACE ON 就没办法 ,在PL/SQL Developer工具下执行此命令会报错

3.具体内容查看

DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION来完成。

这里会冒出一种生活清况 :

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

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

recursive calls           递归调用

index full scan --索引全局扫描

                  3:磁盘排序

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

通过下面后来 系统视图,后来你想看 后来 零散的执行计划的相关信息,有兴趣说说里能 多去研究一下。

二、怎么查看执行计划

名词解释:

index unique scan --索引唯一扫描

时不时实现唯一性扫描

COST没办法 单位,是另一一一两个相对值,是SQL以CBO措施解析执行计划时,供ORACLE来评估CBO成本,选用执行计划用的。没办法 明确的含义,后来在对比是就非常有用。

没办法 此时怎么查看相关信息?不管你在SQL*PLUS抑或PL/SQL DEVELOPER工具上边执行上边脚本另另一一一两个想看 里能了哪几个信息,后来你通过下面脚本查询到trace日志信息

从右向左:在某个节点下还发生多个子节点,先从最靠右的子节点开始英语 英语 执行。

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

你这个行是你这个条说说的的hash值,大家知道ORACLE对每根小ORACLE说说产生的执行计划放满SHARE POOL上边,第一部分经过硬解析,产生hash值。下次再执行时比较hash值,由于相同就我过多 执行硬解析。

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

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

4.1 在全局启用,在参数文件(pfile/spfile)中指定SQL_TRACE =true,在全局启用SQL_TRACE需用由于所有守护tcp连接活动被跟踪,包括后台守护tcp连接以及用户守护tcp连接,通常会由于比较严重的性能哪几个的问题图片,后来 后来 在生产环境要谨慎使用。

6 利用3053事件

后来 后来 人以为PL/SQL的执行计划里能了想看 基数、优化器、耗费等基本信息,实在你这个里能 在PL/SQL工具上边设置的。里能 想看 后来 后来 其它信息,如下所示

类似:

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

由于在执行计划含晒 如下提示:

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

                  2:全表扫描

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

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

基于ORACLE的应用系统后来 后来 性能哪几个的问题图片,是由应用系统SQL性能低劣引起的,后来 后来 ,SQL的性能优化很重要,分析与优化SQL的性能大家一般通过查看该SQL的执行计划,本文就怎么看懂执行计划,以及怎么通过分析执行计划对SQL进行优化做相应说明。

index skip scan --索引跳跃扫描,where条件列是非索引的前提清况 下常发生

5 利用3046事件

通过唯一索引查找另一一一两个数值时不时返回单个ROWID,由于发生UNIQUE或PRIMARY KEY约束(它保证了说说只存取单行说说),ORACLE

    Access: 表示你这个谓词条件的值由于影响数据的访问路劲(全表扫描还是索引)。

TKPROF的帮助信息如下

db block gets           从buffer cache中读取的block的数量当前请求的块数目,当前模式块意思后来 后来 在操作中正好提取的块数目,而需用在一致性读的清况 下而产生的正常清况 下,另一一一两个查询提取的块是在查询查询开始英语 英语 的那个时间点上发生的数据库,当前块是在你这个另另一一一两个发生数据块,而需用你这个时间点另另一一一两个由于另另一一一两个的的数据块数目。

1.执行顺序

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.

4.2在当前SESSION级别设置,通过跟踪当前守护tcp连接里能 发现当前操作的后台数据库递归活动(这在研究数据库新社会形态时尤其有效),研究SQL执行时,发现后台

redo size              DML生成的redo的大小

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

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

执行上边命令后,里能 查看生成的文本文件

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

7 系统视图

index range scan --索引局部扫描

2> COST

consistent gets          从buffer cache中读取的undo数据的block的数量数据请求总数在回滚段Buffer中的数据一致性读所需用的数据块,,这里的概念是在你出理 你你这个操作的时侯 需用在一致性读清况 上出理 多个块,哪几个块产生的主要由于由于你在查询过程中,由于其它会话对数据 块进行操作,而对所要查询的块有了修改,后来由于大家的查询是在哪几个修改另另一一一两个调用的,所要需用对回滚 段中的数据块的前映像进行查询,以保证数据的一致性。另另一一一两个就产生了一致性读。

Id: 执行序列,但需用执行的先后顺序。执行的先后根据Operation缩进来判断(采用最右最上最先执行的原则看层次关系,在同一级由于某个动作没办法 子ID就最先执行。一般按缩进长度来判断,缩进最大的最先执行,由于有2行缩进一样,没办法 就先执行上边的。)

index fast full scan --索引快速全局扫描,不带order by清况 下常发生

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) 由于表没办法 做过分析,没办法 CBO里能 通过动态采样的措施来获取分析数据,里能能 由于正确的执行计划。

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

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) .

  很重类似3046,在此略过、

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

一、哪几个是执行计划(explain plan)

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.

1> Plan hash Value

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

5、 动态分析

Note

physical reads           物理读 后来 后来 从磁盘上读取数据块的数量。其产生的主要由于是:

consistent gets + db block gets. 当在内存中找里能了所需用的数据块说说,就需用从磁盘中获取,于是就产生了物理读。

4.3跟踪其它用户的守护tcp连接,在后来 后来 另另一一一两个大家需用跟踪其它用户的守护tcp连接,而需用当前用户,里能 通过ORACLE提供的系统包

三、看懂执行计划

2.执行计划中字段解释

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

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

错误等。

Cannot SET AUTOTRACE

    Name:操作对象

There are 5 methods of index lookup:

4.谓词说明:

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

3: 在SQL*PLUS下(后来 命令在PL/SQL下无效)执行如下命令:

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

2.Index Lookup 索引扫描

    Operation:当前操作的内容。

这提示用户CBO当前使用的技术,需用用户在分析计划时考虑到哪几个因素。 当冒出你这个提示,说明当前表使用了动态采样。大家从而推断你这个表由于没办法 做过分析。

-dynamic sampling used for the statement

    Rows:也后来 后来 10g版本另另一一一两个的Cardinality(基数),Oracle估计当前操作的返回结果集行数。

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

(2) 由于表分析过,后来分析信息过旧,这时CBO就我过多 在使用动态采样,后来 后来 使用哪几个旧的分析数据,从而由于由于错误的执行计划。

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.

SQL>

                  1:在数据库高速缓存中不发生哪几个块。

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