[z]Oracle性能优化-读懂执行计划
http://blog.csdn.net/lifetragedy/article/details/51320192
Oracle的执行计划
得到执行计划的方式
Autotrace例子
使用Explain
- explain plan set STATEMENT_ID='testplan'
- for select * from dual;
- select lpad(' ',5*(level-1))||operation operation, options,
- object_name, cost,position
- from plan_table
- start with id=0 and STATEMENT_ID='testplan'
- connect by prior id=parent_id ;
怎样看执行计划
看懂执行计划前先需要了解的一些知识
伪列-ROWID
Recursive SQL
Row Source and Predicate
- Row Source(行源):用在查询中,由上一操作返回的符合条件的行的集合,即可以是表的全部行数据的集合;也可以是表的部分行数据的集合;也可以为对上2个row source进行连接操作(如join连接)后得到的行数据集合。
- Predicate(谓词):一个查询中的WHERE限制条件
Driving Table
Probed Table
组合索引(concatenated index)
可选择性(selectivity)
oracle访问数据的存取方法(高实战)
索引扫描的细分(Index Scan)
表连接(高实战1)
表连接(高实战2)
表连接(高实战3)
表连接(高实战4)
不同表连接的相对速度
一个简单的执行计划(在PLSQL-DEVELOPER里按F5,不是F4哈)
再来看2个执行计划(1)
再来看2个执行计划(2)
Oracle中的Hints(提示)
优化器提示
表连接提示
索引提示
并行提示
表访问提示
索引和SQL语句的正确使用
- 索引-参见《给PLSQL插上飞翔的翅膀-PLSQL优化》中的索引部分
- SQL语句-参见《给PLSQL插上飞翔的翅膀-PLSQL优化》中的SQL WHERE和表连接部分
使用ORACLE自带的SQLPLUS
如何让SQLPLUS据有AUTOTRACE功能
- 以sys用户连接;
- 运行$ORACLE_HOME/sqlplus目录下的plustrace.sql脚本;
- grant plustrace to public,对所有用户有效;
- 在sql*plus 中运行set autot on命令,将自动跟踪sql的执行计划并提供sql统计资料;
Consistent Gets
但是为什么第2个SQL的consistent gets如此之少?
原因有如下两点:
- 通常情况下,不在logical RAM buffer中的数据要通过physical reads来读取,而physical reads后通常会紧跟着一个consistent gets。因此一般情况下consistent gets是要比physical reads大的。但是有一个特例,如果physical reads得到的数据直接用于HASH或者SORT,则只记为physical reads不记为consistent gets。所以加上order by后有可能physical reads多但consistent gets少。不过这个原因不是我这里现象产生的原因,因为我这个实验里根本没有physical reads。
- arraysize的影响。arraysize是指读取数据时一次读取得到的行数。这个值默认为15,使用show arraysize命令可以查看。一个数据块例如有100条记录,那么并不是读取这个块一次就能取到所有数据,以arraysize=15为例,就要有100/15=7次consistent gets。把arraysize设置得大一点可以降低consistent gets,不过有时候可能会消耗更多的资源。如果我们做select count(0) from test;操作,那么Oracle会把arraysize暂时设为test的行数,因此consistent gets会很少。很少:
AUTOTRACE的几个常用选项
set autotrace on explain
set autotrace on statistics
set autotrace traceonly
set autotrace traceonly explain
另一种查看SQL计划的方式-Explain plan
准备:
运行$ORACLE_HOME/rdbms/admin目录下的utlxplan.sql脚本
建立plan_table表
执行方案:explain plan for SQL
Explain Plan-查看执行方案
[z]Oracle性能优化-读懂执行计划的更多相关文章
- Oracle性能优化-读懂执行计划
Oracle的执行计划 得到执行计划的方式 Autotrace例子 使用Explain explain plan set STATEMENT_ID='testplan' for select * fr ...
- (转) Oracle性能优化-读懂执行计划
Oracle的执行计划 得到执行计划的方式 Autotrace例子 使用Explain explain plan set STATEMENT_ID='testplan'for select * fro ...
- SQL Server索引进阶:第九级,读懂执行计划
原文地址: Stairway to SQL Server Indexes: Level 9,Reading Query Plans 本文是SQL Server索引进阶系列(Stairway to SQ ...
- Oracle性能优化之Oracle里的执行计划
一.执行计划 执行计划是目标SQL在oracle数据库中具体的执行步骤,oracle用来执行目标SQL语句的具体执行步骤的组合被称为执行计划. 二.如何查看oracle数据库的执行计划 oracle数 ...
- Oracle 课程五之优化器和执行计划
课程目标 完成本课程的学习后,您应该能够: •优化器的作用 •优化器的类型 •优化器的优化步骤 •扫描的基本类型 •表连接的执行计划 •其他运算方式的执行计划 •如何看执行计划顺序 •如何获取执行计划 ...
- 【转载】我眼中的Oracle性能优化
我眼中的Oracle性能优化 大家对于一个业务系统的运行关心有如下几个方面:功能性.稳定性.效率.安全性.而一个系统的性能有包含了网络性能.应用性能.中间件性能.数据库性能等等. 今天从数据库性能的角 ...
- Oracle性能优化之SQL语句
1.SQL语句执行过程 1.1 SQL语句的执行步骤 1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义. 2)语义分析,检查语句中涉及的所有数据库对象是否存在,且用户有相应的权限. ...
- ORACLE性能优化之SQL语句优化
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 操作环境:AIX +11g+PLSQL 包含以下内容: 1. SQL语句执行过程 2. 优化器及执行计划 3. 合 ...
- 我眼中的 Oracle 性能优化
恒生技术之眼 作者 林景忠 大家对于一个业务系统的运行关心有如下几个方面:功能性.稳定性.效率.安全性.而一个系统的性能有包含了网络性能.应用性能.中间件性能.数据库性能等等. 今天从数据库性能的角度 ...
随机推荐
- KETTLE实现数据的删除和更新
一.实现目标 源数据库的数据更新或者删除之后,目标数据库的数据跟着更新或删除,整体流程截图如下: 一.准备工作 源数据库ORACLE 目标数据库MongoDB,在源数据库添加删除.更新触发器 二.操 ...
- CSS3中box-sizing的理解
box-sizing属性可以为三个值之一:content-box(默认),border-box,padding-box,inherit(继承父级box-sizing 属性的值.) content-bo ...
- 这些年正Android - 大学
还记得,第一次看见小周是在大一的操场上. 她正向教学楼站着,一身白配粉的休闲上衣搭配湖蓝色的牛仔裤,穿着一双很平凡的凉鞋,手里拿着当年的Nokia 3110c,皙清的手指,素颜的站着不言不笑.现在回 ...
- jQuery validate兼容IE8写法
最近做项目的时候遇到一个validate插件在IE8下面点击submit按钮没有执行检查的BUG 在chrome和FF,还有IE9以上都可以.百度了好多文章都没有找到解决方法,后面自己测试找到了问题. ...
- 项目中遇到的各种bug和踩过的坑
zepto 赋值时单位转换问题 zepto 的 animate 方法移动某个元素的位置时,例如修改某个绝对定位的元素的 left 值,要与修改前的值单位一致,修改前如果是像素值,修改后也要是像素值,否 ...
- 采用UDP协议的PIC32MZ ethernet bootloader
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 经过千辛万苦,今天终于 ...
- NHibernate系列文章目录
第一章:NHibernate基础 NHibernate介绍 第一个NHibernate工程 简单的增删改查询 运行时监控 NHibernate配置 数据类型映射 Get/Load方法 NHiberna ...
- vs2012安装Microsoft.AspNet.WebApi.WebHost
工具---库程序包管理器---程序包管理器控制台:输入下面命令: Install-Package Microsoft.AspNet.WebApi.WebHost
- ipython notebook设置工作路径和自动保存.py文件 ipython_notebook_config.py
在安装完Anaconda,选择了配置环境变量后,打开cmd命令行 1. 打开命令行, 键入 ipython profile create 2. 键入 , 根据这个地址, 打开profile所在的文件夹 ...
- nodeJS环境
nodeJS官网:https://nodejs.org/en/, npm官网(node package manager):https://www.npmjs.com/ 进入nodejs官方网站下载软 ...