Oracle性能优化-读懂执行计划
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-查看执行方案
Oracle性能优化-读懂执行计划的更多相关文章
- [z]Oracle性能优化-读懂执行计划
http://blog.csdn.net/lifetragedy/article/details/51320192 Oracle的执行计划 得到执行计划的方式 Autotrace例子 ...
- (转) 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 性能优化
恒生技术之眼 作者 林景忠 大家对于一个业务系统的运行关心有如下几个方面:功能性.稳定性.效率.安全性.而一个系统的性能有包含了网络性能.应用性能.中间件性能.数据库性能等等. 今天从数据库性能的角度 ...
- oracle性能优化之awr分析
oracle性能优化之awr分析 作者:bingjava 最近某证券公司系统在业务期间系统运行缓慢,初步排查怀疑是数据库存在性能问题,因此导出了oracle的awr报告进行分析,在此进行记录. 导致系 ...
- mysql之优化器、执行计划、简单优化
mysql之优化器.执行计划.简单优化 2018-12-12 15:11 烟雨楼人 阅读(794) 评论(0) 编辑 收藏 引用连接: https://blog.csdn.net/DrDanger/a ...
随机推荐
- z-index的权重是叠加的
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- C#多线程+委托+匿名方法+Lambda表达式
线程 下面是百度写的: 定义英文:Thread每个正在系统上运行的程序都是一个进程.每个进程包含一到多个线程.进程也可能是整个程序或者是部分程序的动态执行.线程是一组指令的集合,或者是程序的特殊段,它 ...
- Zookeeper增删改查
1.下载Zookeeper http://mirrors.shu.edu.cn/apache/zookeeper/ 这里我选择Zookeeper 3.4.11版本 ZooKeeper 支持某些特定的四 ...
- Hello——Java10新特性,请了解一下
2018年3月20日,Java 10 正式发布! 相关地址: 官方地址:http://www.oracle.com/technetwork/java/javase/downloads/index.ht ...
- 微信的自动回复&接入聊天机器人
今天偶尔发现了一个有趣的python库--itchat,可以实现微信的自动回复.防撤回,结合图灵机器人还能实现聊天机器人的作用 简单介绍一下配置与工具 win7旗舰版 pycharm python ...
- LGTB 与序列
LGTB 有一个长度为N 的序列A,现在他想构造一个新的长度为N 的序列B,使得B 中的任意两个数都 互质. 并且他要使ai与bi对应项之差最小 请输出最小值 输入 第一行包含一个数N 代表序列初始长 ...
- 【USACO】股票市场
题目描述 尽管奶牛天生谨慎,它们仍然在住房抵押信贷市场中大受打击,现在它们准备在股市上碰碰运 气.贝西有内部消息,她知道 S 只股票在今后 D 天内的价格. 假设在一开始,她筹集了 M 元钱,那么她该 ...
- hdu 5505(GT and numbers)
题意: 给你a和b,a每次和它的因子相乘得到一个新的a,求多少次后可以得到b. 输入样例 3 1 1 1 2 2 4 输出样例 0 -1 1 思路: 每次找出a和b/a的最大公约数(即当前a想得到b能 ...
- bzoj3309DZY Loves Math
3309: DZY Loves Math Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1240 Solved: 777[Submit][Statu ...
- bzoj2338[HNOI2011]数矩形 计算几何
2338: [HNOI2011]数矩形 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1535 Solved: 693[Submit][Status ...