在上一章里,重点分享了命令行SQL分析工具的使用方法。在本章将重点分享PL/SQL的SQL分析工具。

一、如何打开PL/SQL执行计划
     开启PL/SQL这工具,推荐如下方法:
  • 点击文件菜单,选择新建子菜单,选中解释计划窗口
  • 键盘快捷方法,先按alt,然后按F,接着按N,最后按E

二、设置PL/SQL执行计划
     初次打开“解释计划窗口”,只能看到基数、优化器、耗费等基本信息,其实这个可以在PL/SQL工具里面设置的。可以看到很多其它信息,如下所示:
     

三、看懂执行计划
     执行顺序的原则是:由上至下,从右向左。
     由上至下:在执行计划中一般含有多个节点,相关级别(或并列)的节点,靠上的优先执行,靠下的后执行;
     从右向左:在某个节点下还存在多个子节点,先从最靠右的子节点开始执行;
     
     在PL/SQL工具中也可以通过它提供的功能来查看执行顺序,如下图所示:
     

四、表访问方式 
     Full Table Scan (FTS) --全表扫描
     Index Lookup --索引扫描
     Index unique scan --索引唯一扫描,通过唯一索引查找一个数值经常返回单个ROWID,如果存在UNIQUE或PRIMARY KEY约束(它保证了语句只存取单行的话),ORACLE经常实现唯一性扫描
     Index range scan --索引局部扫描,使用一个索引存取多行数据,在唯一索引上使用索引范围扫描的典型情况是在谓词(WHERE 限制条件)中使用了范围操作符号(如>, < <>, >=, <=,BWTEEN) 
     Index full scan --索引全局扫描,Full index scans are only available in the CBO as otherwise we are unable to determine whether a full scan would be a good idea or not. We choose an index Full Scan when we have statistics that indicate that it is going to be more efficient than a Full table scan and a sort. For example we may do a Full index scan when we do an unbounded scan of an index and want the data to be ordered in the index order. (直接抄书了,别怪我!)
     Fast Full Index Scans --快速全局索引扫描,不带order by情况下常常发生。Fast full index scans are an alternative to a full table scan when the index contains all the columns that are needed for the query, and at least one column in the index key has the NOT NULL constraint. A fast full scan accesses the data in the index itself,without accessing the table. The database cannot use this scan to eliminate a sort operation because the data is not ordered by the index key.
     Rowid Scans --物理ID扫描,最快的访问数据方式。This is the quickest access method available.Oracle retrieves the specified block and extracts the rows it is interested in.
     Index skip scan --索引跳跃扫描,where条件列是非索引的前提情况下常发生。Index skip scan finds rows even if the column is not the leading column of a concatenated index. It skips the first column(s) during the search. 
     关于表访问方式的详细介绍,请见Oracle联机文档 Oracle Database Performance Tuning Guide 11g Release 2(11.2)的第11章287页。

五、总结
     市面上充斥着各种各样的培训机构,大肆宣扬各种诊断分析工具的使用技巧,似乎诊断分析工具和脚本本身比真正的性能分析和优化措施还重要。工具是用于解决某些具体问题的,如果工具本身太过复杂,充满玄机,我们还需要用它么?
     懂原理,才能做分析!
 
 

品味性能之道<六>:图形化SQL分析工具的更多相关文章

  1. 品味性能之道<五>:SQL分析工具

    一.SQL语句到底是怎么执行的? 想了解SQL语句到底是怎么执行的,那就需要进行SQL语句执行计划分析. 那什么是SQL语句执行计划呢? 就是Oracle服务器执行SQL语句的过程.例如确定是否使用索 ...

  2. 品味性能之道<九>:利用Loadrunner编写socket性能测试脚本简述

            一.概述         Loadrunner拥有极为丰富的工具箱,供予我们制造出各种奇妙魔法的能力.其中就有此次要讨论的socket套接字操作.     二.socket概述     ...

  3. 品味性能之道<十一>:JAVA中switch和if性能比较

    通常而言大家普遍的认知里switch case的效率高于if else.根据我的理解而言switch的查找类似于二叉树,if则是线性查找.按照此逻辑推理对于对比条件数目大于3时switch更优,并且对 ...

  4. 品味性能之道<十>:Oracle Hint

    Hint 是Oracle 提供的一种SQL语法,它允许用户在SQL语句中插入相关的语法,从而影响SQL的执行方式. 因为Hint的特殊作用,所以对于开发人员不应该在代码中使用它,Hint 更像是Ora ...

  5. 品味性能之道<八>:Loadrunner关联技巧与字符处理

    一.概述       Loadrunner作为HP出品的性能测试工具,拥有太多奇妙魔法甜点供予性能测试人员享用,其中吃起来比较有嚼劲的那就是关联了.当然在关联之后我们还需要一些简单的字符处理,用以生成 ...

  6. 品味性能之道<七>:索引基础

    一.索引概述      索引(index),它是数据库必不可少的一部分.它其实很简单呐!很好理解.      索引好比如一本书的目录,一张地图,一个写字楼里挂在大堂墙上的公司名录,一个地铁站的出口指示 ...

  7. 品味性能之道<三>:方法论

    自顶向下的性能优化方法论 系统优化是包括系统设计.开发.产品上线.平台优化的全过程,不同阶段的优化工作对全系统所带来的效益是不同的.理想的性能优化论应该采用自顶向下的优化方法,即在项目设计.开发和上线 ...

  8. 品味性能之道<四>:管理重于技术

      一.性能优化中的角色分工 (1).老外的角色分工         在oracle性能优化方法论中,将IT系统中不同角色需要承担的性能优化工作罗列如下. 各司其职的角色分工 业务分析人员 1.业务需 ...

  9. 品味性能之道<二>:性能工程师可以具备的专业素养

          性能工程师可以具备的专业素养 程序语言原理,包括:C.C++.java及jvm.ASP,因为建站大部分外围应用和中间件都是JAVA编写,大部分的电商平台采用的ASP编写,底层核心系统是C/ ...

随机推荐

  1. video元素和audio元素

    内容: 1.video元素 2.audio元素 注:这两个元素均是HTML5新增的元素 1.video元素 (1)用途 <video> 标签定义视频,比如电影片段或其他视频流 (2)标签属 ...

  2. flask高阶

    内容: 1.进程线程复习 2.flask多线程的问题 3.线程隔离 4.LocalStack 5.flask上下文整理 6.多app应用 1.进程线程复习 (1)进程 进程是一个具有一定独立功能的程序 ...

  3. Pillow 读取图片截断错误

    做图像处理的时候,Pillow是经常使用到的模块. 最近在读取图片的时候出现了一个错误. OSError: image file is truncated (461 bytes not process ...

  4. webserver有哪些

    http://blog.csdn.net/mfsh_1993/article/details/70245380 常用web服务器有Apache.Nginx.Lighttpd.Tomcat.IBM We ...

  5. angular 中怎么获取路径上的参数 参考:https://docs.angularjs.org/api/ng/service/$location

    参考: https://docs.angularjs.org/api/ng/service/$location

  6. json和java bean的相互转换(使用fastjson)

    <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifac ...

  7. UI5-文档-4.28-Unit Test with QUnit

    现在我们在应用程序中有了一个测试文件夹,我们可以开始增加我们的测试覆盖率. 实际上,到目前为止我们添加到应用程序中的每个特性都需要单独的测试用例.到目前为止,我们完全忽略了这一点,所以让我们为步骤23 ...

  8. vue深入了解组件——处理边界情况

    一.访问元素&组件 在绝大多数情况下,我们最好不要触达另一个组件实例内部或手动操作DOM元素.不过也确实在一些情况下做这些事情是合适的. 1.1 访问根实例 在每个 new Vue 实例的子组 ...

  9. Objective C, erum 枚举类型

    typedef NS_ENUM(NSInteger, MYENUM) { TYPE1, TYPE2, TYPE3 };

  10. 安装oracle后java -version命令显示 jdk version "1.3.1"的原因

    因为先装的JDK,后装了oracle,oracle的JDK配置把原来的jdk路径替换掉了. 我的电脑->属性->高级->环境变量->系统变量->PATH ,把JDK的路径 ...