收藏本站

人工智能培训机构,上海涛德,算法工程师,数据科学家高端培训机构-上海涛德

Oracle性能调优培训:什么是Oracle的执行计划

2013-3-28 15:47| 查看: 1825| 评论: 0

摘要: 什么是执行计划? 执行计划是优化程序的输出,供执行引擎实施。它指出了执行引擎必须执行的操作,从而使其能以最有效的方式检索查询所需的数据。 我们可以用EXPLAIN PLAN 语句收集 Oracle 优化程序为 SELECT、UPDA ...

执行计划是优化程序的输出,供执行引擎实施。它指出了执行引擎必须执行的操作,从而使其能以最有效的方式检索查询所需的数据。我们可以EXPLAIN PLAN 语句收集 Oracle 优化程序为 SELECT、UPDATE、INSERT 和 DELETE 语句选择的执行计划

例如分析 SELECT * FROM emp WHERE ename = 'KING'


SQL> EXPLAIN PLAN SET STATEMENT_ID = 'demo01' FOR SELECT * FROM emp

  2  WHERE ename = 'KING';

 

Explained.

 

SQL> SET LINESIZE 130

SQL> SET PAGESIZE 0  

SQL> select * from table(DBMS_XPLAN.DISPLAY());

 

Plan hash value: 3956160932

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

| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT  |      |     1 |    37 |     3   (0)| 00:00:01 |

|*  1 |  TABLE ACCESS FULL| EMP  |     1 |    37 |     3   (0)| 00:00:01 |

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

Predicate Information (identified by operation id):

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

   1 - filter("ENAME"='KING')



最后我们看到该计划包含了 "TABLE ACCESS FULL| EMP"  这一步告诉我们系统没有使用索引而是全表扫描



执行计划的步骤并不按编号顺序执行。步骤之间存在父 - 子关系。行源树是执行计划的核心,它显示下列信息:

•语句所引用的表的顺序
•语句中提到的每个表的访问方法
•受语句中的联接操作影响的表的联接方法
•数据操作,如过滤、排序或聚集

除行源树(或并行操作的数据流树)外,计划表还包含有关以下事项的信息:

•优化,如每项操作的成本和基数
•分区,如一组访问分区
•并行执行,如联接输入的分布方法

借助 EXPLAIN PLAN 的结果,您可以确定优化程序是否选择了特定执行计划,如嵌套循环联接,是否使用索引(如上面的例子)。



在哪里可以找到执行计划?

可使用多种方式在数据库中检索执行计划。此幻灯片列出了最广为人知的方法:

1使用 EXPLAIN PLAN 命令可以查看优化程序可能用于执行 SQL 语句的执行计划。此命令十分有用,它提供优化程序可能使用的计划的概览,并将计划插入名为PLAN_TABLE 的表中且不会执行 SQL 语句。

2V$SQL_PLAN 提供了一种方法来检查最近所执行游标的执行计划。V$SQL_PLAN 中的信息与 EXPLAIN PLAN 语句的输出十分类似。但是,EXPLAIN PLAN 显示的是执行相应语句时可以使用的理论计划,而 V$SQL_PLAN 包含实际使用的计划。

3V$SQL_PLAN_MONITOR 显示 V$SQL_MONITOR 中每条 SQL 语句的计划级监视统计信息。V$SQL_PLAN_MONITOR 中的每一行对应于所监视的执行计划中的一项操作。

4自动工作量资料档案库 (AWR) 基础结构和 statspack 报表存储顶级 SQL 的计划。计划记录在 DBA_HIST_SQL_PLAN STATS$SQL_PLAN 中。



<点击:上海涛德Oracle OCM认证及BI商业智能课程>|人工智能培训-上海涛德 ( 沪ICP备14006824号 )|网站地图   My title page contents

GMT+8, 2019-7-18 22:14 , Processed in 0.126096 second(s), 14 queries , Gzip On.

回顶部