sqlplus中的autotrace使用简介

本文介绍 Oracle 数据库中 SQL 语句调优的方法,重点讲解如何利用 autotrace 功能来评估 SQL 语句的实际执行效果。通过启用 autotrace,可以获得详细的执行计划和统计信息,从而帮助优化 SQL 语句。

1、为什么要启用autotrace
通常,SQL语句调优时,最常用的办法是审视语句的执行计划(execution plan),oracle中优化器可以采用基于成本和基于规则的方式。对于表访问(table full scan, index unique scan, index range scan, index full scan, index fast full scan等)、2表连接(nest loop, merge join, hash join等)等操作进行数量化成本估计。成本主要包括cpu耗费,内存/磁盘读写耗费时间等。一般情况下,优化器根据表、索引上的统计数据,计算出来的sql语句成本还是值得信赖的(非常复杂查询及没有统计数据时除外)。

当然,sql执行计划的成本毕竟是一个估计值,与实际的执行成本还是有差别的。为了观察sql语句的实际执行情况,可以使用sqlplus中的autotrace功能。打开autotrace选项后,每条sql执行完毕,都会列举出10来个统计指标,如:递规调用的查询次数;逻辑读、物理读块数;重做日志大小;通过SQL*Net与客户端传输的数据大小;内存排序、磁盘排序的统计。

2、如何启用autotrace选项
http://www.cnblogs.com/angzi/archive/2007/01/20/625273.html
配置AUTOTRACE的一种方法

http://asktom.oracle.com/tkyte/article1/autotrace.html
Autotrace in SQLPLUS

3、使用说明
命令语法:set autotrace {on [explain | statistics] | off | traceonly}
命令范例:

SQL> set autotrace traceonly
SQL> select * from dual;

Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE
   1    0   TABLE ACCESS (FULL) OF 'DUAL'

Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
          3  consistent gets
          0  physical reads
          0  redo size
        204  bytes sent via SQL*Net to client
        276  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)

关于上述统计数据每一项的含义,可参考oracle相关文档,或者网上的一些介绍资料,如
http://topic.youkuaiyun.com/t/20031212/15/2557315.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值