Tuning SQL 11
这一章还是概述性的说明
优化器
现在都是在用 Cost-based 这种调优器
注意这本书的作者是个大牛, 他就是说 DBA OVER 那个人, Jonathan Lewis
hint 是人告诉SQL语句使用什么优化, 优先级从下到上. statement->session->instance
ALL_ROWS: 缺省值, 完成所有的row, 用于批处理比较好(9i的缺省值是 choose)
FIRST_ROWS_n : 为了返回头n条记录最好的办法, 这种用于 interface, 当人在看的时候可以先返回100行, 其余的oracle慢慢查
FIRST_ROWS: 向后兼容使用, 10g 11g 不要用这个
hint(提示) 嵌入在sql语句中
-- 追求最佳响应时间 response time
analyze 是 OEM 里的, 其他的工具都要掌握
execution plan 是一个树, 里边有很多原子操作.
EXPLAIN PLAN , SQL*Plus AUTOTRACE 是我们要掌握的
utlxplan.sql 在 rdbms/admin/ 这个目录下
因为使用 EXPLAIN PLAN FOR 这个命令创建的 execution plan 的汇报会放在一个表中, plan_table, 而上面这个脚本就是用来创建这个表的. plan_table
select employee_id, last_name, salary from employees
where employee_id = 120;
执行计划是:
注意, Operation 是有缩进的, 这表示 oracle 在执行这个语句时肯定要先执行缩进最里边的, 然后逐层往外
注意: 如果是同一缩进, 就先执行上边的, 再执行下边的.
所以, 我们从里向外分析
由上图, 可以分析出
首先, INDEX UNIQUE SCAN 根据这个 unique 所以, oracle 找到了 rowid, 注意 索引的意义是一个索引值对应一个rowid, 根据 where employee_id = 120, 找到了120对应的rowid.
然后, TABLE ACCESS BY INDEX ROWID, 很明显, 根据里层的rowid和表的rowid索引(默认), 我们找到了EMPLOYEES 这个表的对应值
最后, SELECT STATEMENT 很明显是一个类似title的东西, 总括这个SQL语句返回的情况.
另外, 每次分析完以后最好把刚刚说的那个 table 删除(plan_table)
好书推荐: Tom 大师, Effictive Oracle by design. (这本书我有中文版, TOM大师一共2本书, 都有)
一般使用 alter session set sql_trace = True;
用 TKPROF 解读 trace 文件.
USER_DUMP_DEST 决定放置 trace 文件的目录
tkprof 这个工具的目录是在 oracle/bin的目录下
tkprof pitts_ora_5390.trc(这个是输入, 即 user trace file) myoutput.txt(这个是输出, 你随便指定的文件名) 还可以接可选的 [options]
安装
Tuning SQL 11的更多相关文章
- Oracle:如何使用PL/SQL 11.0连接远程Oracle12c服务器?
背景: 如何实现远程连接服务器上的oracle12c? 1.安装一个oracle12c空库,使用oracle12c中集成的oracle pl/sql developer工具实现连接远程服务器上的ora ...
- PL/SQL 11.6 注册码
PL/SQL Developer 下载地址:Download PL/SQL Developer 11.0.6 注册码 Product Code:4t46t6vydkvsxekkvf3fjnpzy5wb ...
- SQL Tuning / SQL 性能 优化 调优
Some key concents regarding SQL optimization predicate selectivity (column unique ratio) / cardinali ...
- Tuning SQL via case when statement
原SQL如下:SQL的主要问题是红色部分居然通过标量查询,反复的查找与SQL相同的基表,很显然这个可以用case when来简化. select a.TRAN_ID,a.AMOUNT,a.BALANC ...
- 利用ORACLE ADV 功能完成SQL TUNING 调优(顾问培训) “让DBA失业还是解脱?”
oracle自动判断SQL性能功能. 11G的ADV,建议.SNAPSHOT,数据集合, 存储在oracle sys $_开头的表(10几条). 创建SNAPSHOT时选择天数, 默认14天. sq ...
- rac数据库默认sql tuning advisor,导致大量library cache lock
rac数据库默认sql tuning advisor,导致大量library cache lock 问题现象:客户反映周六周日固定十点钟,一个程序会特别慢(大概10分钟),平时1到2秒.查看当时的日志 ...
- Oracle 通过sql profile为sql语句加hint
sql profile最大的优点是在不修改sql语句和会话执行环境的情况下去优化sql的执行效率,适合无法在应用程序中修改sql时.sql profile最常用方法大概是:--创建产生sql tuni ...
- 使用COE脚本绑定SQL Profile
日常运维中,经常会遇到需要绑定好的执行计划的场景. 简单来说,就是将一个sql_id绑定好的plan_hash_value.如果没有使用到绑定变量,还需要把force_match设置为true. 用到 ...
- Real-Time SQL Monitoring using DBMS_SQLTUNE
Real-Time SQL Monitoring reports are available from three locations: Enterprise Manager - Click the ...
随机推荐
- [Angular] Extract Implementation Details of ngrx from an Angular Application with the Facade Pattern
Extracting away the implementation details of ngrx from your components using the facade pattern cre ...
- 修改PHP上传文件的大小限制
Warning: POST Content-Length of 35052172 bytes exceeds the limit of 8388608 bytes in Unknown on line ...
- rapidxml的常见读写操作
rapidxml官网地址:http://rapidxml.sourceforge.net/ rapidxml只包含4个hpp头文件,把这四个头文件放到项目中,即可使用rapidxml #include ...
- html 里面的 role 属性是什么意思
role="button" role是什么意思? html 里面的 role 属性是什么意义和用途 使用role属性告诉辅助设备(如屏幕阅读器)这个元素所扮演的角色,属于WAI-A ...
- vue 不能监测数组长度变化length的原因
由于 JavaScript 的限制,Vue 不能检测以下变动的数组: 当你利用索引直接设置一个项时,例如:vm.items[indexOfItem] = newValue 当你修改数组的长度时,例如: ...
- C语言之基本算法08—去掉最高分去掉最低分求平均值
// /* ================================================================== 题目:选拔赛中通经常使用这种办法求选手分数,去掉一个最 ...
- 关于Future.cancel(mayInterruptIfRunning)方法的参数的问题
mayInterruptIfRunning设成false话,不允许在线程运行时中断,设成true的话就允许. 可以参考下面的代码来理解,如果设为false的话,会打印到99999,如果设成true的话 ...
- 排序(2)---------简单插入排序(C语言实现)
插入排序(Insertion Sort)的算法描写叙述是一种简单直观的排序算法. 它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到对应位置并插入.插入排序在实现上,通常 ...
- UIScrollerView当前显示3张图
代码地址如下:http://www.demodashi.com/demo/11173.html WSLScrollView 功能描述:这是在继承UIView的基础上利用UIScrollerView进行 ...
- 为何 IntelliJ IDEA 比 Eclipse 更好
http://www.oschina.net/news/26929/why-intellij-is-better-than-eclipse圣战 有一些没有唯一正确答案的“永恒”的问题,例如哪个更好:是 ...