Oracle Explain Plan,hint解释与示例】的更多相关文章

Oracle Explain plan使用总结    写多了SQL语句,伴随着数据量的海增,总会遇到性能的问题.在Oracle领域一个不好的习惯,一旦遇到性能问题就推给DBA来做.长期如此,反而对DBA的工作感到神秘.至少笔者所在单位就是如此,DBA向来是牛气冲天的.    要调整SQL语句的性能,就得知道这条SQL语句花费了多少COST.Explain plan工具可帮我们分析这些工作.而调整SQL语句的性能,肯定要涉及索引了.Oracle索引比较常用的有二种,1.B-TREE索引,B-TRE…
Oracle 专业dba博客:http://blog.csdn.net/tianlesoftware Hint 是Oracle 提供的一种SQL语法,它允许用户在SQL语句中插入相关的语法,从而影响SQL的执行方式. 因为Hint的特殊作用,所以对于开发人员不应该在代码中使用它,Hint 更像是Oracle提供给DBA用来分析问题的工具 .在SQL代码中使用Hint,可能导致非常严重的后果,因为数据库的数据是变化的,在某一时刻使用这个执行计划是最优的,在另一个时刻,却可能很差,这也是CBO 取代…
如果要分析某条SQL的性能问题,通常我们要先看SQL的执行计划,看看SQL的每一步执行是否存在问题. 如果一条SQL平时执行的好好的,却有一天突然性能很差,如果排除了系统资源和阻塞的原因,那么基本可以断定是执行计划出了问题. 看懂执行计划也就成了SQL优化的先决条件. 这里的SQL优化指的是SQL性能问题的定位,定位后就可以解决问题. 一.         查看执行计划的三种方法 1.1 设置autotrace 序号 命令 解释 1 SET AUTOTRACE OFF 此为默认值,即关闭Auto…
方法一: 比如要查看解释计划的SQL是:select * from hy_emp 那么在输入窗口输入: EXPLAIN PLAN FOR select * from hy_emp 之后执行,输出窗口会出现 Explained. 字样,如下图: 之后执行select * from table(dbms_xplan.display); 如下: 总结步骤如下: 执行: EXPLAIN PLAN FOR SELECT * from * where.... 再执行: select * from table…
基于oracle的应用系统很多性能问题,是由应用系统sql性能低劣引起的,所以,sql的性能优化很重要,分析与优化sql的性能我们一般通过查看该sql的执行计划,本文就如何看懂执行计划,以及如何通过分析执行计划对sql进行优化做相应说明. 一.什么是执行计划(explain plan) 执行计划:一条查询语句在oracle中的执行过程或访问路径的描述. 二.如何查看执行计划 1.set autotrace on 2.explain plan for sql语句; select plan_tabl…
转自:http://blog.chinaunix.net/uid-21187846-id-3022916.html       如果要分析某条SQL的性能问题,通常我们要先看SQL的执行计划,看看SQL的每一步执行是否存在问题. 如果一条SQL平时执行的好好的,却有一天突然性能很差,如果排除了系统资源和阻塞的原因,那么基本可以断定是执行计划出了问题.看懂执行计划也就成了SQL优化的先决条件.这里的SQL优化指的是SQL性能问题的定位,定位后就可以解决问题. 查看执行计划的三种方法 设置autot…
如果要分析某条SQL的性能问题,通常我们要先看SQL的执行计划,看看SQL的每一步执行是否存在问题. 如果一条SQL平时执行的好好的,却有一天突然性能很差,如果排除了系统资源和阻塞的原因,那么基本可以断定是执行计划出了问题. 看懂执行计划也就成了SQL优化的先决条件. 这里的SQL优化指的是SQL性能问题的定位,定位后就可以解决问题. 一.         查看执行计划的三种方法 1.1 设置autotrace 序号 命令 解释 1 SET AUTOTRACE OFF 此为默认值,即关闭Auto…
Oracle 执行计划(Explain Plan) 说明 原贴地址:http://blog.csdn.net/tianlesoftware/article/details/5827245   如果要分析某条SQL的性能问题,通常我们要先看SQL的执行计划,看看SQL的每一步执行是否存在问题. 如果一条SQL平时执行的好好的,却有一天突然性能很差,如果排除了系统资源和阻塞的原因,那么基本可以断定是执行计划出了问题. 看懂执行计划也就成了SQL优化的先决条件. 这里的SQL优化指的是SQL性能问题的…
Rowid的概念:rowid是一个伪列,既然是伪列,那么这个列就不是用户定义,而是系统自己给加上的. 对每个表都有一个rowid的伪列,但是表中并不物理存储ROWID列的值.不过你可以像使用其它列那样使用它,但是不能删除改列,也不能对该列的值进行 修改.插入.一旦一行数据插入数据库,则rowid在该行的生命周期内是唯一的,即即使该行产生行迁移,行的rowid也不会改变. Recursive SQL概念:有时为了执行用户发出的一个sql语句,Oracle必须执行一些额外的语句,我们将这些额外的语句…
EXPLAIN PLAN 是一个很好的分析SQL语句的工具,它甚至可以在不执行SQL的情况下分析语句. 通过分析,我们就可以知道ORACLE是怎么样连接表,使用什么方式扫描表(索引扫描或全表扫描)以及使用到的索引名称. 你需要按照从里到外,从上到下的次序解读分析的结果. EXPLAIN PLAN分析的结果是用缩进的格式排列的, 最内部的操作将被最先解读, 如果两个操作处于同一层中,带有最小操作号的将被首先执行. NESTED LOOP是少数不按照上述规则处理的操作, 正确的执行路径是检查对NES…
当你第一眼看到explain和hint的时候,第一个反应就是mysql中所谓的这两个关键词,确实可以看出,这个就是在mysql中借鉴过来的,既然是借鉴 过来的,我想大家都知道这两个关键字的用处,话不多说,速速观看~~~ 一:explain演示 1.  构建数据 为了方便演示,我需要create ten data to inventory,而且还是要在no index 的情况下,比如下面这样: db.inventory.insertMany([ { , }, { , }, { , }, { , }…
注:以下是本人对Explain Plan的试分析,有不对的地方希望大家指出.关于如何查看Oracle的解释计划请参考:https://www.cnblogs.com/xiandedanteng/p/12123819.html 例一: 执行的SQL语句: EXPLAIN plan for select * from hy_emp emp,hy_dept dept where emp.deptno=dept.deptno and emp.empno=1 select * from table(dbm…
Explain Plan 执行计划,包含了一个SELECT(后续版本支持UPDATE等语句)的执行 主要字段 id 编号,从1开始,执行的时候从大到小,相同编号从上到下依次执行. Select_type SIMPLE 简单查询 PRIMARY 最外层查询 SUBQUERY 子查询 DEPENDENT SUBQUERY:  取决于外层查询的子查询 UNION:  UNION子句右侧的SELECT子句 type system表仅有一行(=系统表).这是const联接类型的一个特例. const表最多…
一.获取SQL语句执行计划的方式 1. 使用explain plan 将执行计划加载到表plan_table,然后查询该表来获取预估的执行计划 2. 启用执行计划跟踪功能,即autotrace功能 3. 使用PL/SQL Developer提供的获取执行计划方法 - F5键 4. 查询动态性能视图v$sql_plan,v$sql_plan_statistics,v$sql_workarea 等来获取已缓存到库缓存中的真实执行计划 5. 查询自动工作量资料库(Automatic Workload…
oracle HA 高可用性具体解释(之二,深入解析TAF,以及HA框架) :http://blog.csdn.net/panfelix/article/details/38436197 一.HA FAILOVER,Oracle RAC的高可用性的技术基础是Failover,就是指集群中的热河一个节点的故障都不会影响到用户的使用,连接到故障节点的用户会被自己主动转移到健康节点,从用户高手而言感觉不到这样的切换,这个功能在Oracle中被称作Failover(故障转移). Oracle RAC的F…
在没有创建数据直方图之前,查询优化器是cbo,可能不会选择代价最低(效率最高)的方式查询. 先创建表 --日语假名表 CREATE TABLE JAPANESE_SOUNDMARK ( ID INTEGER PRIMARY KEY, ROMAJI ), PHONETIC_SYMBOL ) ); 创建序列 --创建自增长的序列,用于主键 CREATE SEQUENCE SEQ_JAPANESE_SOUNDMARK START NOMAXVALUE INCREMENT NOCYCLE CACHE ;…
最近遇到了错误"Error: cannot fetch last explain plan from PLAN_TABLE",于是稍微研究了一下哪些场景下碰到这种错误,具体参考下面案例: 1:忘记使用EXPLAIN PLAN放在SQL语句前面,然后使用使用SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY)查看具体SQL的执行计划时,就会遇到错误"Error: cannot fetch last explain plan from PLAN_TABL…
1.explain plan的使用 SQL> explain plan for delete from t_jingyu; Explained. SQL> select * from table(dbms_xplan.display); PLAN_TABLE_OUTPUT ----------------------------------------------------------------------------------------------------------------…
Mysql 查询运行过程 大致分为4个阶段吧: 语法分析(sql_parse.cc<词法分析, 语法分析, 语义检查 >) >>sql_resolver.cc # JOIN.prepare 生成逻辑查询plan(sql_optimizer.cc) >># JOIN.optimize 生成物理查询plan(sql_planner.cc) run the explain plan(sql_executor.cc) JOIN.exec JOIN.prepare() : 子查询…
一.简介 这里简单介绍一下各个工具的使用场景,一般用mysql,redis,mongodb做存储层,hadoop,spark做大数据分析. mysql适合结构化数据,类似excel表格一样定义严格的数据,用于数据量中,速度一般支持事务处理场合 redis适合缓存内存对象,如缓存队列,用于数据量小,速度快不支持事务处理高并发场合 mongodb,适合半结构化数据,如文本信息,用于数据量大,速度较快不支持事务处理场合 hadoop是个生态系统,上面有大数据分析很多组件,适合事后大数据分析任务 spa…
oracle HA 高可用性具体解释(之中的一个,client.server端服务具体解释):http://write.blog.csdn.net/postedit 我们已经看到TAF是的Oracle的会话可以自己主动又一次连接,须要说明的是.这个能力是基于OCI的,是OCI的一个功能,JDBC Thin Driver无效.由于这样的驱动不是构建在OCI库上的. 尽管这个功能发起于RAC.但TAF并不局限于RAC,单实例.DG环境都可以享受这个优点. Oralce声称其TAF可以保证用户会话自己…
转自:http://blog.chinaunix.net/uid-540802-id-3419311.html explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. 使用方法,在select语句前加上explain就可以了: 如: explain select surname,first_name form a,b where a.id=b.id EXPLAIN列的解释: table:显示这一行的数据是关于哪张表的 type:…
mysql explain字段意思解释 explain包含id.select_type.table.type.possible_keys.key.key_len.ref.rows.extra字段 id id列的编号是select的序列号,有几个select就有几个id,并且id的顺序是按select出现的顺序增长的. select_type select_type表示对应行是简单还是复杂的查询. 1. simple:简单查询 2. primary:复杂查询中最外层的select 3. subqu…
两张表的建表语句: CREATE TABLE hy_emp ( empno NUMBER(8,0) not null primary key, ename NVARCHAR2(60) not null, deptno NUMBER(8,0) not null, sal NUMBER(10,0) DEFAULT 0 not null ) CREATE TABLE hy_dept ( deptno NUMBER(8,0) not null primary key, dname NVARCHAR2(6…
python引用C++ DLL文件若干解释及示例 首先说一下,python不支持C++的DLL,但是支持C的DLL:C++因为和C兼容可以编译为C的DLL,这是下面文章的背景与前提 首先我这儿的示例使用VS2017编译的DLL,先讲过程,再解释 第一步,新建DLL项目 确定之后我们可以看到默认的文件 这时候我们需要新建一个与Test.cpp对应的头文件 这是完成之后的代码结构 下面是Test.h文件的内容和Test.cpp文件的内容及相应解释 // Test.cpp : 定义 DLL 应用程序的…
如果要分析某条SQL的性能问题,通常我们要先看SQL的执行计划,看看SQL的每一步执行是否存在问题. 如果一条SQL平时执行的好好的,却有一天突然性能很差,如果排除了系统资源和阻塞的原因,那么基本可以断定是执行计划出了问题. 看懂执行计划也就成了SQL优化的先决条件. 这里的SQL优化指的是SQL性能问题的定位,定位后就可以解决问题. 行缩进一样,那么就先执行上面的. 3.1 执行计划中字段解释: ID: 一个序号,但不是执行的先后顺序.执行的先后根据缩进来判断. Operation: 当前操作…
Log.java package com.example.entity; import java.util.Date; public class Log { private int id; private Date timestamp; private String module; private String function; private String method; private String userId; private String userName; private Stri…
Explain 从之前的文章中,我们可以知道explain()能够提供大量与查询相关的信息.对于速度比较慢的查询来说,这是最重要的诊断工具之一.通过查看一个查询的explain()输出信息,可以知道查询使用了哪个索引,以及是如何使用的. 最常见的explain()的输出有两种类型:使用索引的查询和没有使用索引的查询. 在上一篇MongoDB的博客可以看到两种类型的explain如下: 1. 没有使用索引时 { "cursor" : "BasicCursor", &q…