- 浏览: 599399 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
基于ORACLE的应用系统很多性能问题,是由应用系统SQL性能低劣引起的,所以SQL的性能优化很重要,分析与优化SQL的性能我们一般通过查看该SQL的执行计划,本文就如何看懂执行计划,以及如何通过分析执行计划对SQL进行优化做相应说明。
这个执行计划是怎么得到的?既然是计划,那么绝对不是把这个语句先执行一遍,然后把这个计算出来,那样的话这个执行计划就成了事后诸葛亮了。这个执行计划是oracle根据统计信息得到的。执行计划的准确性(主要指数据返回,数据量大小)由统计信息的准确性决定。
执行计划是一条查询语句在ORACLE中的执行过程或访问路径的描述。
查看执行计划语句:
EXPLAIN PLAN FOR SELECT * FROM SCOTT.EMP; --要解析的SQL脚本
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY); --查看执行计划
看懂执行计划:
执行顺序的原则是:由上至下,从右向左(Operator缩进位置)。
由上至下:在执行计划中一般含有多个节点,相同级别(或并列)的节点,靠上的优先执行,靠下的后执行。
从右向左:在某个节点下还存在多个子节点,先从最靠右的子节点开始执行。
根据执行顺序我们知道执行顺序是id为 4 2 3 1 0 的顺序执行的。
具体内容查看:
1.Plan hash Value:
这一行是这一条语句的的hash值,我们知道ORACLE对每一条SQL语句产生的执行计划放在SHARE POOL里面,第一次要经过硬解析,产生hash值。下次再执行时比较hash值,如果相同就不会执行硬解析。
2.对上面执行计划列字段的解释:
Id: 执行序列,但不是执行的先后顺序。执行的先后根据Operation缩进来判断(采用最右最上最先执行的原则看层次关系,在同一级如果某个动作没有子ID就最先执行。一般按缩进长度来判断,缩进最大的最先执行,如果有2行缩进一样,那么就先执行上面的。)
Operation:当前操作的内容。
Name:操作对象
Rows:也就是10g版本以前的Cardinality(基数),Oracle估计当前操作的返回结果集行数。
Bytes:表示执行该步骤后返回的字节数。
Cost(CPU):表示执行到该步骤的一个执行成本,用于说明SQL执行的代价。
Time:Oracle 估计当前操作的时间。
3.谓词说明:
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter("B"."MGR" IS NOT NULL)
4 - access("A"."EMPNO" = "B"."MGR")
Access: 表示这个谓词条件的值将会影响数据的访问路劲(全表扫描还是索引)。
Filter:表示谓词条件的值不会影响数据的访问路劲,只起过滤的作用。
在谓词中主要注意access,要考虑谓词的条件,使用的访问路径是否正确。
关于Autotrace几个常用选项的说明:
SET AUTOTRACE OFF ---------------- 不生成AUTOTRACE 报告,这是缺省模式
SET AUTOTRACE ON EXPLAIN ------ AUTOTRACE只显示优化器执行路径报告
SET AUTOTRACE ON STATISTICS -- 只显示执行统计信息
SET AUTOTRACE ON ----------------- 包含执行计划和统计信息
SET AUTOTRACE TRACEONLY ------ 同set autotrace on,但是不显示查询输出
这个执行计划是怎么得到的?既然是计划,那么绝对不是把这个语句先执行一遍,然后把这个计算出来,那样的话这个执行计划就成了事后诸葛亮了。这个执行计划是oracle根据统计信息得到的。执行计划的准确性(主要指数据返回,数据量大小)由统计信息的准确性决定。
ANALYZE TABLE TEST COMPUTE STATISTICS;--查看表的统计信息
执行计划是一条查询语句在ORACLE中的执行过程或访问路径的描述。
查看执行计划语句:
EXPLAIN PLAN FOR SELECT * FROM SCOTT.EMP; --要解析的SQL脚本
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY); --查看执行计划
看懂执行计划:
执行顺序的原则是:由上至下,从右向左(Operator缩进位置)。
由上至下:在执行计划中一般含有多个节点,相同级别(或并列)的节点,靠上的优先执行,靠下的后执行。
从右向左:在某个节点下还存在多个子节点,先从最靠右的子节点开始执行。
根据执行顺序我们知道执行顺序是id为 4 2 3 1 0 的顺序执行的。
具体内容查看:
1.Plan hash Value:
这一行是这一条语句的的hash值,我们知道ORACLE对每一条SQL语句产生的执行计划放在SHARE POOL里面,第一次要经过硬解析,产生hash值。下次再执行时比较hash值,如果相同就不会执行硬解析。
2.对上面执行计划列字段的解释:
Id: 执行序列,但不是执行的先后顺序。执行的先后根据Operation缩进来判断(采用最右最上最先执行的原则看层次关系,在同一级如果某个动作没有子ID就最先执行。一般按缩进长度来判断,缩进最大的最先执行,如果有2行缩进一样,那么就先执行上面的。)
Operation:当前操作的内容。
Name:操作对象
Rows:也就是10g版本以前的Cardinality(基数),Oracle估计当前操作的返回结果集行数。
Bytes:表示执行该步骤后返回的字节数。
Cost(CPU):表示执行到该步骤的一个执行成本,用于说明SQL执行的代价。
Time:Oracle 估计当前操作的时间。
3.谓词说明:
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter("B"."MGR" IS NOT NULL)
4 - access("A"."EMPNO" = "B"."MGR")
Access: 表示这个谓词条件的值将会影响数据的访问路劲(全表扫描还是索引)。
Filter:表示谓词条件的值不会影响数据的访问路劲,只起过滤的作用。
在谓词中主要注意access,要考虑谓词的条件,使用的访问路径是否正确。
关于Autotrace几个常用选项的说明:
SET AUTOTRACE OFF ---------------- 不生成AUTOTRACE 报告,这是缺省模式
SET AUTOTRACE ON EXPLAIN ------ AUTOTRACE只显示优化器执行路径报告
SET AUTOTRACE ON STATISTICS -- 只显示执行统计信息
SET AUTOTRACE ON ----------------- 包含执行计划和统计信息
SET AUTOTRACE TRACEONLY ------ 同set autotrace on,但是不显示查询输出
发表评论
文章已被作者锁定,不允许评论。
-
sql 最小化表查询次(col1,col2) = (select col1,col2 from t)
2018-01-02 16:51 555最小化表查询次数 ... -
sql 用inner join取代in和exists
2018-01-02 16:48 1155使用表连接替换EXISTS ... -
oracle HINT详解
2017-09-01 10:42 524ORACLE的HINT详解 hints是oracle提供的 ... -
oracle jdbctemplate如何优化查询速度
2017-08-21 09:33 13251.设置setFetchSize进行优化 // 可以优化 ... -
oracle Parallel模式-Parallel用法(/*+PARALLEL(n)*/)
2017-08-18 16:48 19211.用途 强行启用 ... -
oracle 存储过程学习总结
2016-08-22 08:42 362dbms_output.put_line('CONCAT ... -
oracle SGA总结信息
2016-07-06 10:38 514SGA 系统全局区 SGA是Oracle用来为实例村粗数据和 ... -
oracle where条件分支查询
2016-06-30 16:16 525select * from test xx where ... -
oracle with as用法
2016-06-24 09:58 942with as语法 –针对一个别名 with tmp as ... -
oracle 重复数据处理的sql整理
2016-06-22 14:44 405Oracle 删除重复数据只留一条 1、查找表中多余的重 ... -
oracle 数据库组成部分(数据库(各种文件)+实例(SGA PGA + 后台进程))知识
2016-04-11 19:51 1276一、SQL server中的实例与 ... -
oracle expdp与impdp导入导出
2016-03-17 10:17 1286[b]数据泵工具导出的步骤:[/b] 1、创建DIRECT ... -
oracle 常用sql语句积累
2016-01-28 11:01 5721.删除重复列 delete from t t1 where ... -
oracle forall关键字进行批量操作
2014-12-12 15:26 1047两个数据操纵语言(DML)语句:BULK COLLECT和FO ... -
oracle 表中有子父关系列则使用CONNECT BY PRIOR
2014-10-27 10:08 423查询名字为xx xxx的所有子数据 SELECT re.U ... -
oracle 存储过程使用实例
2014-10-22 17:41 6111.建包 CREATE OR REPLACE PACKA ... -
oracle 删除大量数据后整理表(analyze table xxx compute statistics)
2014-10-17 18:09 22311. DELETE 后 TRUNCATE TABLE ; 然 ... -
oracle splitstr 函数
2014-10-15 17:45 1415splitstr函数 CREATE OR REPLACE ... -
oracle 高效Sql语句总结
2014-10-08 11:23 505No SQL,No cost. SQL语句是造成数据库 ... -
oracle merge 更新或插入数据
2014-09-26 14:26 500主要功能 提供有条件地更新和插入数据到数据库表中 如果该 ...
相关推荐
Oracle 执行计划是数据库性能调整的关键部分,对于想要学习 Oracle 数据库的朋友非常有帮助。下面是Oracle 执行计划的背景知识和重要概念。 共享 SQL 语句 Oracle 将 SQL 语句及解析后得到的执行计划存放在内存中...
本文将深入探讨Oracle的执行计划和表分区两个重要概念,以及它们如何影响数据库性能。 执行计划是Oracle数据库处理SQL查询的一种步骤序列,它详细描述了数据如何从表中提取、如何进行排序或聚合,以及如何返回到...
Oracle执行计划是数据库执行SQL语句前确定的操作步骤序列。优化器根据表的统计信息、存储参数、可用的执行路径等生成执行计划,以实现最快的查询速度。执行计划通常用一系列数据库操作符来表示,这些操作符及其顺序...
Oracle SQL执行计划是指Oracle数据库为SQL语句制定的一系列执行...通过像MacleanLiu这样经验丰富的专家的指导,参与者可以更有效地学习和掌握Oracle SQL执行计划的解读和应用,从而提升自己的Oracle数据库管理能力。
1. "oracle执行计划解释.doc":这很可能是一份关于Oracle执行计划的文档。执行计划是Oracle处理SQL查询的详细步骤,它决定了数据如何被检索、排序和返回。理解执行计划有助于优化SQL语句,提高查询性能。文档可能...
详细介绍了oracle执行计划,对于初步了解和深入学习都是非常好的文档。。。
Oracle 存储过程学习经典入门 Oracle 存储过程学习目录是 Oracle 存储过程学习的基础知识,了解 Oracle 存储过程的基本语法、基础知识和一些常见问题的解决方法是非常重要的。本文将从 Oracle 存储过程的基础知识...
本文将深入探讨Oracle执行计划的稳定性及其对SQL性能的影响。 首先,执行计划是由Oracle优化器生成的。优化器的主要任务是分析可能的执行路径,并根据预估的成本选择最优的执行策略。Oracle提供了两种主要的优化器...
以及数据库性能调优,如分析SQL执行计划、调整数据库参数、优化索引策略等。 总的来说,《Oracle 10G学习完全图解》是一份全面的Oracle学习资料,不仅提供了清晰的安装流程,还强调了实战操作和问题解决。无论你是...
Oracle存储过程是数据库编程的重要组成部分,它允许程序员在数据库中执行复杂的业务逻辑和数据操作。这个"ORACLE存储过程学习源码"集合包含了从基础到高级的30个示例,是学习和掌握Oracle存储过程的理想资源。下面,...
本篇文章将深入探讨Oracle索引的学习,重点关注索引的原理、类型、优缺点以及如何使用和分析执行计划。 首先,理解索引的基本概念。索引是一种特殊的数据结构,它存储在表空间中,用于加速对表数据的访问。当执行...
8. **性能优化**:了解如何使用 Explain Plan 分析查询执行计划,学习SQL优化器的工作原理,以及如何通过索引、分区、统计信息等方式提升查询性能。 9. **数据库设计**:学习关系数据库设计的基本原则,如范式理论...
### Oracle学习笔记知识点详解 #### 一、Oracle简介 Oracle是一家知名的软件公司,以其数据库管理系统闻名全球。该公司成立于1977年,总部位于美国加利福尼亚州。Oracle不仅提供数据库解决方案,还涉及中间件、...
2. Explain Plan:分析SQL执行计划,找出性能瓶颈。 3. SQL优化器:Oracle内置的工具,自动选择最佳执行路径。 4. 绑定变量:减少硬解析,提高执行效率。 5. 分区策略:根据业务需求选择合适的分区策略,提升查询...
### Oracle学习知识点总结 #### 一、Oracle密码管理与解锁 **知识点1:忘记Oracle用户密码的处理方式** - **场景描述**:当忘记Oracle数据库中的某个用户(例如`scott`)的密码时,可以通过拥有更高权限的账户...
Oracle 10g 学习课件是一套全面的教程,专为想要深入理解Oracle数据库管理系统的人们设计。Oracle数据库是全球广泛使用的大型企业级数据库系统,尤其在金融、电信和政府等行业中占据主导地位。Oracle 10g是其第十个...
学习如何编写JDBC代码,执行SQL语句,处理结果集,以及事务管理,是Java开发者必备的技能。 最后,性能调优是Oracle11g学习的高级阶段。这包括SQL查询优化、数据库架构优化、内存管理优化等,需要借助于各种诊断...
10. **性能优化**:学习SQL优化,如使用EXPLAIN PLAN分析查询执行计划,以及通过调整表分区、索引和统计信息来提高查询性能。 11. **数据库设计**:掌握数据库设计原则,如范式理论(第一范式到第五范式),以及...
文档可能还会介绍Oracle的SQL优化器,如CBO(Cost-Based Optimizer)的工作原理,以及如何通过SQL Profiles和SQL Plan Baselines来稳定高效的执行计划。 其他如“9.pdf”、“3.pdf”、“4.pdf”等文件,很可能是对...
本文主要针对ORACLE数据库的学习笔记进行深入解析。 首先,SQL是Structured Query Language的缩写,即结构化查询语言,它是用于管理关系数据库的标准语言。SQL主要包括五种类型的子语言:DDL(Data Definition ...