这一章还是概述性的说明

优化器

现在都是在用 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的更多相关文章

  1. Oracle:如何使用PL/SQL 11.0连接远程Oracle12c服务器?

    背景: 如何实现远程连接服务器上的oracle12c? 1.安装一个oracle12c空库,使用oracle12c中集成的oracle pl/sql developer工具实现连接远程服务器上的ora ...

  2. PL/SQL 11.6 注册码

    PL/SQL Developer 下载地址:Download PL/SQL Developer 11.0.6 注册码 Product Code:4t46t6vydkvsxekkvf3fjnpzy5wb ...

  3. SQL Tuning / SQL 性能 优化 调优

    Some key concents regarding SQL optimization predicate selectivity (column unique ratio) / cardinali ...

  4. Tuning SQL via case when statement

    原SQL如下:SQL的主要问题是红色部分居然通过标量查询,反复的查找与SQL相同的基表,很显然这个可以用case when来简化. select a.TRAN_ID,a.AMOUNT,a.BALANC ...

  5. 利用ORACLE ADV 功能完成SQL TUNING 调优(顾问培训) “让DBA失业还是解脱?”

    oracle自动判断SQL性能功能. 11G的ADV,建议.SNAPSHOT,数据集合, 存储在oracle sys $_开头的表(10几条).  创建SNAPSHOT时选择天数, 默认14天. sq ...

  6. rac数据库默认sql tuning advisor,导致大量library cache lock

    rac数据库默认sql tuning advisor,导致大量library cache lock 问题现象:客户反映周六周日固定十点钟,一个程序会特别慢(大概10分钟),平时1到2秒.查看当时的日志 ...

  7. Oracle 通过sql profile为sql语句加hint

    sql profile最大的优点是在不修改sql语句和会话执行环境的情况下去优化sql的执行效率,适合无法在应用程序中修改sql时.sql profile最常用方法大概是:--创建产生sql tuni ...

  8. 使用COE脚本绑定SQL Profile

    日常运维中,经常会遇到需要绑定好的执行计划的场景. 简单来说,就是将一个sql_id绑定好的plan_hash_value.如果没有使用到绑定变量,还需要把force_match设置为true. 用到 ...

  9. Real-Time SQL Monitoring using DBMS_SQLTUNE

    Real-Time SQL Monitoring reports are available from three locations: Enterprise Manager - Click the ...

随机推荐

  1. js怎么获取图片的相对地址

    <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content ...

  2. Linux C高级编程——网络编程之以太网(2)

    Linux网络编程--以太网 宗旨:技术的学习是有限的,分享的精神是无限的. 1.以太网帧格式 源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的.用ifconf ...

  3. 我的Android进阶之旅------&gt;Android关于TextWatcher的初步了解

    首先来看一下TextWatcher的源码 package android.text; /** * When an object of a type is attached to an Editable ...

  4. Redis源代码分析(五)--- sparkline微线图

    sparkline这个单词,我第一次看的时候.也不知道这什么意思啊,曾经根本没听过啊,可是这真真实实的出如今了redis的代码中了,刚刚開始以为这也是属于普通的队列嘛.就把他分在了struct包里了. ...

  5. 使用WinScp连接远程服务器和传输文件

    早在3月份,我就使用到了WinScp,WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端.同时支持SCP协议. 它的主要功能就是在本地与远程计算机间安全的复制文件..WinSc ...

  6. 【转】maven常见问题问答

    转自:http://www.iteye.com/topic/973166 前言 Maven,发音是[`meivin],"专家"的意思.它是一个很好的项目管理工具,很早就进入了我的必 ...

  7. 安卓Eclipse开发人员的福音

    我们知道.谷歌已经放弃对Eclipse(ADT)的维护更新了.如今官网上也找不到ADT的下载链接了,我们大多数同学仍在使用的ADT版本号可能已经非常老了,预计大多数的SDK版本号仅仅到4.4,而,在尝 ...

  8. [读后感]Java 控制台执行 Jar 传參的编码问题

    下面这版面,太让我纠结了.谁能帮调整一下,... _________________ java -jar test.jar "一二一" 这样传进去的 "一二一" ...

  9. 2、jQuery选择器

    2.1 基本选择器 它有元素Id.Class.元素名.多个选择符组成,通过基本选择器可以实现大多数页面元素的查找. 选择器 功能 返回值 #id 根据给定的ID匹配一个元素 单个元素 element ...

  10. 图解Java机制

    一图胜过千万言!希望本文能帮助童鞋们回顾已经知道的那些知识. 1String对象不可改变的特性 下图显示了如下代码运行的过程: String s = "abcd"; s = s.c ...