Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1143221
  • 博文数量: 231
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 2662
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-03 16:35
个人简介

学无止境

文章分类

全部博文(231)

文章存档

2014年(7)

2013年(103)

2011年(11)

2010年(53)

2009年(57)

分类: Oracle

2013-12-04 15:39:53

什么是执行计划:
执行计划是由优化器产生的一组执行SQL语句及执行操作的步骤。
当语句执行时,优化器要执行很多步骤。这些步骤中的每一步要么是获取数据行,或者是准备某种处理方式,这些步骤的组合被称为执行计划。
 
查看执行计划的方法:
1.EXPLAIN PLAN
2.SQL Trace
3. Automatic Workload Repository
4. V$SQL_PLAN
5.SQL*Plus的AUTOTRACE
6.第三方ORACLE工具,PL/SQL developer,Toad
 
执行计划的用途:
1.确认当前的执行计划。
2.检验在表上创建索引的效果。
3.找到游标包含的正确访问路径。
4.检验有无索引,优化器的选择是否有差异。
5.确认优化器是否选择的预期的执行计划。
用执行计划来决定什么:
1.删除或创建索引。
2.对象的统计信息是否需要收集。
3.修改参数值。
4.升级应用或数据库。
 

使用SQL*Plus的autotrace:
set autotrace traceonly
set autotrace statistics
 
例如:
----------------------------------------------------------------------------------------
| Id  | Operation                    | Name    | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |         |   420 | 15120 |    13   (8)| 00:00:01 |
|   1 |  MERGE JOIN                  |         |   420 | 15120 |    13   (8)| 00:00:01 |
|   2 |   TABLE ACCESS BY INDEX ROWID| TAB2    |   420 | 13020 |    11   (0)| 00:00:01 |
|   3 |    INDEX FULL SCAN           | PK_TAB2 |   420 |       |     7   (0)| 00:00:01 |
|*  4 |   SORT JOIN                  |         |   420 |  2100 |     2  (50)| 00:00:01 |
|   5 |    INDEX FULL SCAN           | TAB1ID  |   420 |  2100 |     1   (0)| 00:00:01 |
----------------------------------------------------------------------------------------
 

统计的含义:
db block gets 当前读的逻辑IO,通常发生在DML中,由于DML需要读块的最新值。
consistent gets 一致读,buffer cache的读,通常select语句更多,有可能是需要通过undo来构建。
physical reads 磁盘读的块数量
redo size DML语句中产生的redo的数量
sorts (memory) 内存排序的数量
sorts (disk) 使用临时磁盘存储排序的数量
 

DBMS_XPLAN包的使用:
1.查看V$SQL_PLAN视图中保存的过去的SQL的执行计划
SELECT PLAN_TABLE_OUTPUT FROM
 TABLE(DBMS_XPLAN.DISPLAY_CURSOR('47ju6102uvq5q'));
2.查看AWR中保存的执行计划:
SELECT PLAN_TABLE_OUTPUT FROM
 TABLE(DBMS_XPLAN.DISPLAY_AWR('454rug2yva18w'));

阅读(947) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~