在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如何使用AUTOTRACE查看执行计划 在Oracle数据库管理中,查看SQL语句的执行计划是一项重要的技能,这有助于优化查询性能、诊断性能问题等。AUTOTRACE是Oracle提供的一种强大的工具,用于自动展示SQL语句的...
执行计划的解读方法可以使用 `V$SQLAREA`、`V$SQL_PLAN`、`V$SQLSTATS` 等性能视图来获取执行计划的信息。 执行计划的优化 执行计划的优化可以通过调整索引、访问路径、联接顺序等方法来实现。 索引扫描 索引...
Oracle 将 SQL 语句及解析后得到的执行计划存放在内存中,以便下次执行相同的 SQL 语句时可以直接获取执行计划,提高了 SQL 的执行性能和节省了内存的使用。这块位于系统全局区域 SGA(system global area)的共享池...
ORACLE执行计划和SQL调优
1:在PL/SQL下按F5查看执行计划。第三方工具toad等。很多人以为PL/SQL的执行计划只能看到基数、优化器、耗费等基本信息,其实这个可以在PL/SQL工具里面设置的。可以看到很多其它信息,如下所示 2:在SQL*PLUS(PL/SQL的...
Oracle提供了多种工具来分析SQL执行计划,包括EXPLAIN PLAN和AUTOTRACE。通过这些工具,可以详细查看SQL语句如何访问表和索引,以及执行过程中涉及的操作类型。 #### 二、执行计划优化 Oracle数据库的执行计划选择...
Oracle SQL执行计划是指Oracle数据库为SQL语句制定的一系列执行步骤,这些步骤指导数据库如何高效地访问数据和执行SQL语句。执行计划对于Oracle数据库的性能调优至关重要,因为它能够揭示SQL语句的执行细节,帮助...
2. **SQL*PLUS**:在SQL*PLUS中,使用`EXPLAIN PLAN FOR`命令预解析SQL,然后使用`SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY)`显示执行计划。此外,还可以通过设置`AUTOTRACE`来同时获取执行时间和统计信息。 - `...
控制执行计划主要通过使用Oracle的提示(HINT)或OUTLINE来实现,以适应不同场景下的性能需求。 - **使用HINT**:HINT允许开发者直接干预Oracle优化器的决策过程,例如: - 改变表的连接顺序或连接方式。 - 使用...
本篇将详细介绍如何使用SqlDbx连接到Oracle数据库,以及涉及的相关文件及其作用。 首先,连接Oracle数据库通常需要Oracle客户端软件,但这里提到的“Sqldbx连接oracle,不用安装client”,意味着SqlDbx可能通过一种...
在压缩包子文件的文件名"ms转sql语句.exe"中,我们可以推测这可能是一个用于将SQL Server语句转换为Oracle兼容格式的可执行程序。这样的工具通常会提供用户友好的界面,让用户导入SQL Server的数据库元数据,然后...
此外,还介绍了如何执行SQL命令、查看结果、使用SQL*Plus的内置功能来管理查询结果等实用技巧。 #### 1.3 选择数据 选择数据是SQL中最常见的操作之一。本节将介绍如何使用`SELECT`语句来从数据库表中检索数据。这...
执行计划是指数据库优化器为SQL语句选择的访问路径和策略,用以决定如何执行查询。一个有效的执行计划可以显著提高查询效率,降低资源消耗。然而,执行计划可能因多种因素而发生变化,例如统计信息更新、系统参数...
Oracle 是一个功能强大的关系数据库管理系统,然而,如果不正确地使用 SQL 语句,可能会导致执行效率低下。为了提高 Oracle 的执行效率,需要遵循一些最佳实践。下面是nine个提高 Oracle 执行效率的方法: 1. 选择...
通过以上步骤,我们便能在C#中使用Oracle自带驱动实现批处理,高效地执行多条SQL语句。这种方法不仅提高了性能,还能减少网络通信次数,对大型数据库操作尤其有益。 最后,压缩包中的"WindowsApplication13.sln"和...