当前位置: 代码迷 >> 综合 >> 基于Oracle的SQL优化--学习(五)
  详细解决方案

基于Oracle的SQL优化--学习(五)

热度:56   发布时间:2023-09-19 15:32:24.0

Oracle的执行计划

    执行计划的含义

Oracle用来执行目标SQL语句的一系列步骤的组合就被称为执行计划。
执行计划分为下面三个部分:
(1)目标SQL的正文,SQL ID和其执行计划所对应的PLAN HASH VALUE。
(2)执行计划的主体。
(3)执行计划的额外补充信息。

如何查看执行计划

1、explain plan命令

执行如下命令
explain plan for + 目标SQL
select * from table(dbms_xplan.display)

2、DBMS_XPLAN包

它有四种方式,可以根据不同的场景进行应用。

        (1)select * from table(dbms_xplan.display);

        (2)select * from table(dbms_xplan.display_cursor(null,null,'advanced'/'all'));

          (3)select * from table(dbms_xplan.display_cursor ('sql_id/hash_value',child_cursor_number,'advanced'));

          (4)select * from table(dbms_xplan.display_awr('sql_id'));

    第一种就是上一节中提到的方法配合explain plan使用。

    第二种方式适合刚刚执行完要查询的SQL之后立刻使用。

    第三种用于查看指定SQL的执行计划,需要SQL ID和Child Cusor Number参数。

    第四种用于查看指定SQL的所有历史执行计划。

3、AUTOTRACE开关

    使用的命令是:

     set autotrace {off|on|traceonly}[explain][statistics]

4、10046事件与tkprof命令

所得到的执行计划中明确显示目标SQL实际执行计划中每一个执行步骤所消耗的逻辑读,物理读和花费的时间。这种细粒度的明细显示在我们诊断复杂 sQL 的性能问题时尤为有用,而几这也是其他二种方法所不能提供的。
其执行步骤是:
(1)首先在当前 Session 中激活10046事件。
(2)接着在此 Session 中执行目标 SQL 
(3)最后在此 session 中关闭 10046事件。
当执行完上述步骤后,Oracle就会将目标SQL的执行计划和明细资源消耗写入此Session所对应的trace文件中,査看这个trace文件就能知道执行SQL的执行计划和资源消耗明细了。Oracle会在参数USER_DUMP_DEST所代表的目录下生成trace文件,命名格式为‘实例名_ora_当前session的spid_trc’。



  相关解决方案