ORACLE 执行计划2
SQL>set timing on --显示Elapsed执行总时间。区别于set time on
方式一:
SQL>set autotrace on/off --显示结果集、执行计划和统计信息(执行SQL)
SQL>set autotrace traceonly --显示执行计划和统计信息, 不显示结果集(执行SQL)
SQL>set autotrace traceonly explain --只显示执行计划(不执行SQL)
SQL>set autotrace traceonly statistics --只显示统计信息(不执行SQL)
SQL>SELECT * FRM T_BD_ACCOUNTVIEW;
方式二:
SQL>explan plan for select * from t_bd_accountview;
SQL>SELECT plan_table_output FROM table(DBMS_XPLAN.DISPLAY('t_bd_accountview'));
SQL>SELECT * FROM table(dbms_xplan.display);
方式三:
SQL>alter session set SQL_TRACE=true;
SQL>SELECT sid, serial#, username from v$session where username = 'xxxx'
SQL>exec dbms_system.set_SQL_TRACE_in_session(sid, serial#,true/false)
--跟踪其它用户
SQL>alter session set events '10046 trace name context forever, level 8') //or '10046 trace name context off'
SQL>exec dbms_system.set_ev(sid, serial#,10046, 0-8(level), username);
执行计划中的字段解释:
ID:一个序号,但不是执行的先后顺序。执行的先后顺序根据缩进来判断
Operation:当前操作的内容
Rows:当前操作的cardinality, Oracle根据CBO估算当前操作返回的结果集
Cost(CPU):Oracle计算出来的一个数值(代价), 用于说明SQL执行的代价
Time: oracle估计当前操作的时间
谓词说明:
Access:影响数据的访问路径(表还是索引)
Filter:只起过滤数据的作用。
explain plan各列的含义:
ID_PLUS_EXP
PARENT_ID_PLUS_EXP
PLAN_PLUS_EXP
OBJECT_NODE_PLUS_EXP
Statistics各列含义:
db block gets --从buffer cache中读取的block数量
constient gets --从buffer cache中读取的undo数据的block数量
---because of查询过程中,由于其它回话对数据块进行了操作,而对所要查询的块有了修改。读取其以保证一致性。
physical reads --从磁盘读取的block的数量
redo size --DML生成的redo的大小 ( 重做数——执行SQL的过程中,产生的重做日志的大小)
sorts(memory) --在内存执行的排序量
sorts(dis) --在磁盘执行的排序量
逻辑读:db block gets + constient gets
物理读:physical reads
缓冲区使用的命中率 = 1 - 物理读 / (缓冲块读+缓冲undo读)
SQL>SELECT name, value FROM v$sysstat WHERE name IN('db block gets', 'consistent gets', 'physical reads');
如果buffer cache的命中率在90%以上,否则需要增加数据缓冲区的大小
动态分析
如果执行计划中出现提示:
--dynamic sampling used for the statement
表示用户使用了动态采样技术CBO模式下。===>从而推断这个表可能没有做过分析,可有导致两种现象:
1.该表没有做过分析,CBO采用动态采样分析数据,也可以得出正确的执行计划
2.分析信息过旧,CBO不会动态采样,采用旧的信息,从而导致错误的执行计划。
ORACLE 执行计划2相关推荐
- Oracle执行计划突变诊断之统计信息收集问题
Oracle执行计划突变诊断之统计信息收集问题 1. 情形描述 DB version:11.2.0.4 WITH SQL1 AS(SELECT LAC,CI,TO_NUMBER(C.LONGITUD ...
- ORACLE执行计划的一些基本概念
本文介绍了ORACLE执行计划的一些基本概念,供学习应用. 一.相关的概念 Rowid的概念:rowid是一个伪列,既然是伪列,那么这个列就不是用户定义,而是系统自己给加上的.对每个表都有一个rowi ...
- Oracle 执行计划
Oracle执行计划是什么 关于执行计划的概念,相信大家都有过基础的了解.这里不详细解释概念性东西,只需要知道.执行计划是Oracle根据SQL语句生成的一个执行步骤的表述即可. 执行计划分三部分:1 ...
- 海天 oracle,Oracle执行计划详解
作者:TTTBLOG --- 简介: 本文全面详细介绍oracle执行计划的相关的概念,访问数据的存取方法,表之间的连接等内容. 并有总结和概述,便于理解与记忆! +++ 目录 --- 一.相关的概念 ...
- oracle执行计划分析(转载)
2019独角兽企业重金招聘Python工程师标准>>> (转载,原文地址:http://blog.itpub.net/24478467/viewspace-705754/) 简介: ...
- Oracle 执行计划 提示 'PLAN_TABLE' is old version 解决方法
用set autotrace 或者 explain plan for 生成执行计划时,有如下提示: Note ----- - 'PLAN_TABLE' is old version 导致这个错误 ...
- [转]Oracle执行计划的相关概念
[转]Oracle执行计划的相关概念 本文介绍了ORACLE执行计划的一些基本概念,供学习应用. 一.相关的概念 Rowid的概念:rowid是一个伪列,既然是伪列,那么这个列就不是用户定义,而是系统 ...
- ORACLE 执行计划分析
http://www.cnblogs.com/rootq/archive/2008/09/06/1285779.html ORACLE 执行计划分析 一.什么是执行计划 An explain plan ...
- 【转】Oracle执行计划解释
Oracle执行计划解释 一.相关的概念 Rowid的概念:rowid是一个伪列,既然是伪列,那么这个列就不是用户定义,而是系统自己给加上的. 对每个表都有一个rowid的伪列,但是表中并不物 ...
- oracle通过执行计划cost,Oracle 执行计划(5)—cost成本之索引范围扫描-B树索引
Oracle 执行计划(5)-cost成本之索引范围扫描-B树索引 SQL> select * from t1 where a<600 ; 已选择599行. 已用时间: 00: 00: ...
最新文章
- 注册表数据提取工具RegRipper
- Lua——循环和流程控制(if,for,while,break,goto,repeat...until)
- 二层冗余网络引起的问题
- intel ssd toolbox 绿色单文件_你想要的大容量来了!影驰擎GA-E 16TB SSD上手:速度喜人-SSD,固态 ——快科技(驱动之家旗下媒体)-...
- 阿里巴巴整理的python_阿里P8大佬整理的2020年最全99道python面试题,文末附答案...
- Docker : 在宿主机查看docker使用cpu、内存、网络、io情况
- calendar控件使用 extjs_extjs年月选择日历及通用js同步ajax调用返回json object
- linux svn 客户端安装
- Android之内容提供者ContentProvider的总结
- 系泊系统悬链线matlab,基于悬链线方程的系泊系统状态分析
- asp.net pdf如何转换成tif_PDF如何转换成PPT格式?PDF转PPT软件使用方法分享
- thon中的全局变量
- 视频直播本地测试服务器搭建
- 电信天翼网关连接多个路由器
- 011 MySQL性能分析
- 《饥饿游戏》第三章-26
- php报错:PHP Startup Unable to load dynamic library
- oppo a36参数配置
- linux -- 嵌入式linux下wifi无线网卡驱动
- linux指法教程,linux系统指法练习与打字游戏软件