`

用 sql plus 查看Oracle执行计划 (转帖)

阅读更多

在sql*plus中输入set autotrace on ,然后直接执行sql语句;会自动显示执行计划和统计信息。
缺点: 用该方法查看执行时间较长的sql语句时,需要等待该语句执行成功后,才返回执行计划,使优化的周期大大增长。
如果不想执行语句而只是想得到执行计划可以采用 set autotrace traceonly 这样,就只会列出执行计划,而不会真正的执行语句,大大减少了优化时间。虽然也列出了统计信息,但是因为没有执行语句,所以该统计信息没有用处。


set autotrace 选项 :
on            显示查询结果,执行计划,统计数据
on statistics 显示查询结果,统计数据,不显示执行计划
on explain    显示查询结果,执行计划,不显示统计数据
traceonly     显示执行计划和统计结果,但不包括查询结果
traceonly statistics 仅显示统计数据

统计信息的各个参数的意思:
statistics
---------------------------------------------------------
        10 recursive calls
        33 db block gets
11244060 consistent gets
    330674 physical reads
        68 redo size
132579265 bytes sent via SQL*Net to client
   2147396 bytes received via SQL*Net from client
     58033 SQL*Net roundtrips to/from client
         4 sorts (memory)
         1 sorts (disk)
    870466 rows processed

 

recursive Calls. 在用户级和系统级产生的递归调用的数目。Oracle数据库维护用于内部处理的表。当它需要改变那些表时,Oracle数据库生成一个内部SQL语句,该 语句反过来产生一个递归调用。简而言之,因此,如果你必须解析该查询,例如,你可能必须运行一些其他的查询来得到数据字典的信息。这就是递归调用。空间管 理、安全性检查、从SQL中调用PL/SQL,所有这些都会引起递归SQL调用。

 

db block gets. 当前块被请求的次数。当存在时,当前(current)模式块将被立即检索,而不会以一致读的方式检索。通常,查询检索的块如果在查询开始时存在,它们就 被检索。当前模式块如果存在就立即被检索,而不是从一个以前的时间点检索。在一个SELECT期间,你可以看到当前模式检索,因为对于需要进行全面扫描的 表来说,需要读数据字典来找到范围信息(因为你需要"立即"信息,而不是一致读)。在修改期间,为了向块中写入内容,你要以当前模式访问块。

 

consistent gets. 对于一个块一致读被请求的次数。这是你以"一致读"模式处理的块数。为了回滚一个块,这将包括从回滚段读取的块的数目。例如,这是你在SELECT语句中 读取块的模式。当你进行一个指定的UPDATE/DELETE操作时,你也以一致读模式读取块,然后以当前模式获得块以便实际进行修改。

 

physical Reads. 从磁盘读取的数据块的总数。这个数等于"physical reads direct"(物理上直接读取的块数)的值加上读入缓存区的所有块数。

 

redo Size. 所产生的以字节为单位的redo(重做日志)总数。

 

bytes Sent via SQL*Net to Client. 从前台进程发送到客户端的字节总数。一般来说,这是你的结果集的整体大小。

 

bytes Received via SQL*Net from Client. 通过网络从客户端收到的字节总数。一般来说,这是通过网络传输的你的查询的大小。

 

SQL*Net Round-trips to/from Client. 发送到客户端和从客户端接收的网络消息总数。一般来说,这是为了得到回答在你和服务器间发生的交互次数。当你在SQL*Plus中增加ARRAYSIZE 设置值时,你将看到对于返回多条记录的SELECT语句,这个数字会下降(更少的来回交互,因为每获取N条记录是一个来回)。当你减少你的 ARRAYSIZE值时,你将看到这个数字增加。

 

sorts (memory). 完全在内存中执行、且不需要任何磁盘写的排序操作的数目。没有比在内存中排序更好的排序了,除非根本没有排序。排序通常是由表连接SQL操作的选择条件设定所引起的。

 

sorts (disk). 至少需要一次磁盘写的排序操作的次数。需要磁盘输入/输出的排序操作需要耗费大量资源。请试着增加初始化参数SORT_AREA_SIZE的大小。

 

rows Processed. 这是由SELECT语句所返回的或是由INSERT、UPDATE或DELETE语句修改的总行数。

分享到:
评论

相关推荐

    oracle怎么查看执行计划

    ### Oracle如何使用AUTOTRACE查看执行计划 在Oracle数据库管理中,查看SQL语句的执行计划是一项重要的技能,这有助于优化查询性能、诊断性能问题等。AUTOTRACE是Oracle提供的一种强大的工具,用于自动展示SQL语句的...

    oracle 执行计划 详解

    执行计划的解读方法可以使用 `V$SQLAREA`、`V$SQL_PLAN`、`V$SQLSTATS` 等性能视图来获取执行计划的信息。 执行计划的优化 执行计划的优化可以通过调整索引、访问路径、联接顺序等方法来实现。 索引扫描 索引...

    oracle执行计划详解

    Oracle 将 SQL 语句及解析后得到的执行计划存放在内存中,以便下次执行相同的 SQL 语句时可以直接获取执行计划,提高了 SQL 的执行性能和节省了内存的使用。这块位于系统全局区域 SGA(system global area)的共享池...

    ORACLE执行计划和SQL调优

    ORACLE执行计划和SQL调优

    ORACLE数据库查看执行计划的方法

    1:在PL/SQL下按F5查看执行计划。第三方工具toad等。很多人以为PL/SQL的执行计划只能看到基数、优化器、耗费等基本信息,其实这个可以在PL/SQL工具里面设置的。可以看到很多其它信息,如下所示 2:在SQL*PLUS(PL/SQL的...

    Oracle中SQL语句执行效率的查找与解决

    Oracle提供了多种工具来分析SQL执行计划,包括EXPLAIN PLAN和AUTOTRACE。通过这些工具,可以详细查看SQL语句如何访问表和索引,以及执行过程中涉及的操作类型。 #### 二、执行计划优化 Oracle数据库的执行计划选择...

    读懂oracle sql执行计划

    Oracle SQL执行计划是指Oracle数据库为SQL语句制定的一系列执行步骤,这些步骤指导数据库如何高效地访问数据和执行SQL语句。执行计划对于Oracle数据库的性能调优至关重要,因为它能够揭示SQL语句的执行细节,帮助...

    ORACLE数据库查看执行计划

    2. **SQL*PLUS**:在SQL*PLUS中,使用`EXPLAIN PLAN FOR`命令预解析SQL,然后使用`SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY)`显示执行计划。此外,还可以通过设置`AUTOTRACE`来同时获取执行时间和统计信息。 - `...

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

    控制执行计划主要通过使用Oracle的提示(HINT)或OUTLINE来实现,以适应不同场景下的性能需求。 - **使用HINT**:HINT允许开发者直接干预Oracle优化器的决策过程,例如: - 改变表的连接顺序或连接方式。 - 使用...

    SqlDbx连接oracle

    本篇将详细介绍如何使用SqlDbx连接到Oracle数据库,以及涉及的相关文件及其作用。 首先,连接Oracle数据库通常需要Oracle客户端软件,但这里提到的“Sqldbx连接oracle,不用安装client”,意味着SqlDbx可能通过一种...

    sqlserver自动生成sql语句工具sqlserver转oracle

    在压缩包子文件的文件名"ms转sql语句.exe"中,我们可以推测这可能是一个用于将SQL Server语句转换为Oracle兼容格式的可执行程序。这样的工具通常会提供用户友好的界面,让用户导入SQL Server的数据库元数据,然后...

    Oracle SQL*Plus Pocket Reference, 2nd Edition

    此外,还介绍了如何执行SQL命令、查看结果、使用SQL*Plus的内置功能来管理查询结果等实用技巧。 #### 1.3 选择数据 选择数据是SQL中最常见的操作之一。本节将介绍如何使用`SELECT`语句来从数据库表中检索数据。这...

    oracle11g执行计划管理-(讲解如何固定sql的执行计划)

    执行计划是指数据库优化器为SQL语句选择的访问路径和策略,用以决定如何执行查询。一个有效的执行计划可以显著提高查询效率,降低资源消耗。然而,执行计划可能因多种因素而发生变化,例如统计信息更新、系统参数...

    ORACLE 优化sql语句提高oracle执行效率 .doc

    Oracle 是一个功能强大的关系数据库管理系统,然而,如果不正确地使用 SQL 语句,可能会导致执行效率低下。为了提高 Oracle 的执行效率,需要遵循一些最佳实践。下面是nine个提高 Oracle 执行效率的方法: 1. 选择...

    Oracle批处理:使用C# 自带Oracle驱动一次执行多条Sql语句

    通过以上步骤,我们便能在C#中使用Oracle自带驱动实现批处理,高效地执行多条SQL语句。这种方法不仅提高了性能,还能减少网络通信次数,对大型数据库操作尤其有益。 最后,压缩包中的"WindowsApplication13.sln"和...

Global site tag (gtag.js) - Google Analytics