`

oracle 执行计划

阅读更多
  • 解释计划

 

      语句EXPLAIN PLAN用来显示优化器为SQL语句所选择的执行计划。需要说明的是当你得到了解释计划输出的时候,你其实是得到了当SQL语句执行的时候应该采用的预期执行计划。你并没有得到实际的执行计划以及与其相关的数据源执行统计信息。你所得到的只是估计值,而不是实际值。将估计的信息称为解释计划输出 ,而把实际信息称为执行计划输出 来区分实际和预期的执行计划。

 

解释计划例子:

 

SQL> explain plan for
  2  select * from small_customers;
 
Explained
 
SQL> select * from table(dbms_xplan.display);
 
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 1819012793
--------------------------------------------------------------------------------
| Id  | Operation         | Name            | Rows  | Bytes | Cost (%CPU)| Time
--------------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |                 |     6 |   156 |     3   (0)| 00:00
|   1 |  TABLE ACCESS FULL| SMALL_CUSTOMERS |     6 |   156 |     3   (0)| 00:00
--------------------------------------------------------------------------------
Note
-----
   - dynamic sampling used for this statement
 
12 rows selected

 

缩进格式:

select id, parent_id, operation
  from (select level lvl,
               id,
               parent_id,
               lpad(' ', level) || operation || ' ' || options || ' ' ||
               object_name as operation
          from plan_table
         start with id = 0
        connect by prior id = parent_id)
 order by lvl desc, id;

 

      解释计划输出最令人郁闷的地方就是它与语句实际执行时所使用的计划可能是不一致的。使用解释计划的时候以下3点可能导致计划输出与实际执行计划不一致的地方:

  1. 解释计划是基于你使用它的时候的环境来生成的
  2. 解释计划不考虑绑定变量的数据类型(所有的绑定变量都是VARCHAR2的)
  3. 解释计划不"窥视"绑定变量的值

      对于解释计划来说,数据类型都被认为是一样的(都是字符串)。然而,当语句真正执行的时候所准备的执行计划却要考虑数据类型,ORACLE隐式地将字符串数据类型转换为数值类型来匹配绑定变量的数据类型。

 

      如何学会阅读计划:

  1. 学会识别和分割父子组
  2. 掌握计划中运算执行的顺序
  3. 学会以途述的形式来阅读计划

按照执行顺序显示的计划运算:

explain plan for select * from test_1;
select * from table(dbms_xplan.display);
select id, parent_id, operation
  from (select level lvl,
               id,
               parent_id,
               lpad(' ', level) || operation || ' ' || options || ' ' ||
               object_name as operation
          from plan_table
         start with id = 0
        connect by prior id = parent_id)
 order by lvl desc, id;

 

  • 执行计划

 

      当一条SQL语句执行的时候将会生成该语句的实际执行计划。在语句被硬解析之后,所选的执行计划会被存到库高速缓存中以便以后重用。可以通过查询V$SQL_PLAN来查看计划运算。

select sql_id from v$sql where sql_text like '%TEST%';
select * from v$sql_plan where sql_id='7dfcmhhhxjspn'  and child_number=0;

或者用以下语句来代替v$sql_plan 
select * from table(dbms_xplan.display_cursor('7dfcmhhhxjspn',null,'ALLSTATS LAST'));

也可以通过一条语句:
SELECT * FROM TEST;
SELECT XPLAN.*
  FROM (SELECT MAX(SQL_ID) KEEP(DENSE_RANK LAST ORDER BY LAST_ACTIVE_TIME) SQL_ID,
               MAX(CHILD_NUMBER) KEEP(DENSE_RANK LAST ORDER BY LAST_ACTIVE_TIME) CHILD_NUMBER
          FROM V$SQL
         WHERE UPPER(SQL_TEXT) LIKE '%SELECT * FROM TEST%'
           AND UPPER(SQL_TEXT) NOT LIKE
               '%FROM V$SQL WHERE UPPER(SQL_TEXT) LIKE %') SQLINFO,
       TABLE(DBMS_XPLAN.display_cursor(SQLINFO.SQL_ID,
                                       SQLINFO.CHILD_NUMBER,
                                       'ALLSTATS LAST')) XPLAN;
  
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    oracle 执行计划 详解

    "Oracle 执行计划详解" Oracle 执行计划是数据库性能优化的关键。为了更好地理解和优化 Oracle 数据库的执行计划,我们需要了解执行计划的生成过程、优化方法和执行计划的解读方法。 执行计划生成过程 执行计划的...

    Oracle执行计划参数解释

    Oracle执行计划参数解释,Oracle SQL优化的基础是看懂Oracle的执行计划,本文当系统整理了Oracle执行计划里面的各种参数。

    oracle执行计划解读

    Oracle 执行计划解读 Oracle 执行计划是一种查询执行路径的表示形式,它展示了 Oracle 数据库在执行查询时访问数据的路径。下面是 Oracle 执行计划的详细解读,包括执行计划的定义、访问数据的方式、执行计划层次...

    oracle执行计划建立与阅读

    Oracle执行计划是数据库管理系统在处理SQL语句时的预估工作流程,它是Oracle优化器根据当前数据分布、索引情况和系统资源等信息选择的最佳执行策略。了解和分析执行计划对于提升SQL语句的性能至关重要。 一、生成...

    Oracle 执行计划PPT

    Oracle 执行计划是数据库管理系统在处理SQL查询时制定的一系列步骤,用于高效地检索和处理数据。它是Oracle数据库优化器(Optimizer)根据统计信息、成本估算和已存在的索引等信息生成的。优化器有两种主要的工作...

    Oracle执行计划介绍与测试.pdf

    ### Oracle执行计划深入解析 #### 引言 在数据库领域,尤其对于大型企业级应用,Oracle数据库因其强大的功能和稳定性而被广泛采用。在Oracle中,执行计划是数据库优化器根据SQL语句特性生成的一系列步骤,用于指导...

    oracle执行计划详解

    Oracle 执行计划详解是数据库管理系统中一个非常重要的概念。本文将详细介绍 Oracle 执行计划的相关概念、访问数据的存取方法、表之间的连接等内容,并对总结和概述,以便于理解和记忆。 一、相关的概念 1. Rowid ...

    oracle执行计划文档

    除了以上概念,Oracle执行计划还包括其他访问方法,如索引扫描(Index Scan)、索引唯一扫描(Index Unique Scan)、索引快速全扫描(Index Fast Full Scan)以及各种类型的连接操作,如嵌套循环(Nested Loop)、...

    ORACLE执行计划和SQL调优.pptx

    ORACLE 执行计划和 SQL 调优 ORACLE 执行计划和 SQL 调优是关系数据库管理系统中非常重要的概念。执行计划是 Oracle 优化器生成的,用于描述如何访问数据库中的数据的计划。execute plan 中包括了访问路径、表扫描...

    Oracle执行计划详解

    Oracle执行计划详解,包括oracle执行顺序和索引详细介绍

    Oracle执行计划与SQL优化实例.pptx

    《Oracle执行计划与SQL优化实例》这一主题深入探讨了数据库管理与优化的关键方面,尤其针对Oracle数据库环境。本文旨在解析并扩展此PPTX文件中提及的重要知识点,涵盖执行计划的概念、获取方法、解读技巧以及SQL优化...

    ORACLE执行计划和SQL调优

    ORACLE执行计划和SQL调优

    oracle执行计划详细解释

    oracle执行计划详细解释

    Oracle执行计划.ppt

    Oracle 执行计划 Oracle 执行计划是 Oracle 数据库中的一种机制,用于确定如何访问存储器,得到需要的结果集。执行计划的主要内容包括访问方式和访问顺序。下面是 Oracle 执行计划的详细知识点: 一、执行计划的...

    关于Oracle中执行计划稳定性深入研究

    总之,Oracle执行计划的稳定性与数据库性能紧密相关,理解并掌握优化器的工作原理以及如何控制执行计划的选择,是优化数据库性能的关键。在基于代价的优化器模式下,虽然存在执行计划不稳定的可能,但通过合理管理和...

    Oracle 执行计划稳定性

    总之,Oracle执行计划的稳定性对于数据库的高效运行具有重要意义。通过合理管理统计信息、选择合适的优化器模式、利用SQL提示和监控工具,可以有效控制执行计划的稳定性,从而提升数据库的整体性能。

    Oracle执行计划1.ppt

    "Oracle 执行计划" Oracle 执行计划是 Oracle 数据库中的一种机制,用于优化 SQL 语句的执行过程。它决定了如何访问存储器,得到需要的结果集。执行计划的主要内容包括访问方式和访问顺序。 Oracle 执行计划的生成...

Global site tag (gtag.js) - Google Analytics