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 ...
随机推荐
- Win7是否可以把光盘当作U盘用
光盘当作U盘用 在Windows 7刻录功能中,之前有看到一篇文章<Windows7 新功能 光盘当U盘用>(感兴趣的同学可以百度一下),文章的意思大致是说作者插入了一张空的DVD光盘,然 ...
- Bitmap和Drawable的互相转换
刚好之前的项目实用到.怕遗忘了.就先记录下来.然后会用到的时候直接来这copy使用就好了. 1.Bitmap ---->Drawable: public static Drawable bitm ...
- EditText输入为空button不可点击搜索
一丶任务详情 二丶改动后演示效果 三丶改动过程 分析:非常明显这里是须要监听EditText,推断输入字符串长度是否不为0来改变Button样式 首先的屡清楚代码逻辑在适当的位子加监听推断是最好的处理 ...
- 算法笔记_057:蓝桥杯练习 最大的算式 (Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大.因为乘号和加号一共就 ...
- 微信小程序navigateBack如何带参数
wx.navigateBack({//返回 delta:1 }) 方法如下: 一. var pages = getCurrentPages(); var prevPage = pages[page ...
- .htaccess 文件中详细介绍
#如果存在rewrite_module 模块则执行里面的代码 <IfModule rewrite_module> #开启重写机制 RewriteEngine On #告诉apache这里不 ...
- Customize User Interfaces and Pass User Input to Installer Classes
In this article I am going to demonstrate how to customize your MSI install to prompt the user for s ...
- [Mac A]为什么国外程序员爱用 Mac?
from http://www.vpsee.com/2009/06/why-programmers-love-mac/ Mac 在国外很受欢迎,尤其是在 设计/web开发/IT 人员圈子里.普通用户喜 ...
- 在linux下的使用复制命令cp,不让出现“overwrite”(文件覆盖)提示的方法。(转)
在linux下的使用复制命令cp,不让出现“overwrite”(文件覆盖)提示的方法. 一般我们在使用cp命令时加上-f选项,希望不让出现“overwrite”的提示(文件覆盖的提示).如:# cp ...
- 【Python3 爬虫】17_爬取天气信息
需求说明 到网站http://lishi.tianqi.com/kunming/201802.html可以看到昆明2018年2月份的天气信息,然后将数据存储到数据库. 实现代码 #-*-coding: ...