什么是访问路径?表扫描数据的时候使用了什么方式,这个方式就是访问路径

1.全表扫描

TABLE ACCESS FULL 全表扫描,多块读,等待事件:db file scattered read

如果是并行全表扫描,等待事件: direct path read

11g 有个新特征,在进行全表扫描的时候也会产生 direct path read

在OLTP环境中要通过 10949 event 禁止该新特征

在OLAP环境中可以不用禁止

如果表上面有大量的行迁链接,会是单块读 等待事件表现为db file sequential read

如果表上面发生了一个大事物,全表扫描会从UNDO读取前镜像,也会是单块读

HINT: FULL(表名/别名)

等待事件:db file scattered read 在SGA中

等待事件:direct path read 在PGA中

禁用oracle11g的新特性,有两种方法

a.event 10949设置后,可以禁用direct path read。

开启

SQL> ALTER session SET EVENTS '10949 TRACE NAME CONTEXT FOREVER';

禁用

SQL> ALTER session SET EVENTS '10949 TRACE NAME CONTEXT off';

b.通过设置隐含参数_serial_direct_read来设置是否启用direct path read

禁用

SQL>alter session set "_serial_direct_read"=never;

开启(默认)

SQL> alter session set "_serial_direct_read"=auto;

2.索引唯一扫描

INDEX UNIQUE SCAN 索引唯一扫描。单块读 只可能发生在unique index/primary key 等值查找

等待事件:db file sequential read 但是你几乎看不到,因为只读一条数据

HINT 无需指定,有索引会自动走INDEX UNIQUE SCAN

索引唯一扫描在不回表的时候访问几个索引块?

索引高度这么多个块。

select * from t where id=10;返回一行数据,要扫描多少个块?

索引高度+1(在不发生行迁移连接的情况下)

索引高度+2(发生行迁移连接的情况)

3.索引范围扫描

INDEX RANGE SCAN 索引范围扫描。单块读 发生在对unique index/primary key 进行范围查找,

对non-unique index进行等值查找,范围查找

等待事件:db file sequential read 如果你监控某个SQL出现大量该等待事件,

有可能执行计划就有问题

HINT: INDEX(表名/别名 索引名)

在索引唯一扫描中很难捕获等待事件,因为只返回一条数据,单块读的时间为12ms,索引唯一扫描扫描索引高度这么多个块,返回一条数据

的时间小于1s,1s这个阈值是记录等待时间的要求,所以不会记录等待事件,这个阈值是ash的响应时间,什么是ash呢?

ASH以V$SESSION为基础,每秒采样一次,记录活动会话等待的事件。不活动的会话不会采样,采样工作由新引入的后台进程MMNL来完成。

那么在索引范围扫描中怎么能看见db file sequential read等待事件呢?

12ms*100等于1.2s超过了ash的阈值,就可以记录等待事件

100单块读,每个块包含1000条数据,就是10w条数据,也就是说通过索引范围扫描返回超过10w条数据时就会出现等待时间。

监控一个sql的等待事件

select (sysdate-logon_time)*24*60 minutes,username,machine,program,action,

status,inst_id,sid,serial#,event,p1,p2,p3,

row_wait_obj# obj#,row_wait_file# file#,row_wait_block# block#,sql_id,sql_child_number from gv$session where sql_id='XXX';

4.索引跳跃扫描

INDEX SKIP SCAN 索引跳跃扫描。单块读 只可能发生在组合索引上,引导列(组合索引第一列)没有包

含在where条件中,并且引导列基数很低。INDEX SKIP SCAN

一般来说只会返回少量数据,如果返回大量数据,说明该执

行计划可能有问题,也就是说索引建立不对。

等待事件:db file sequential read

HINT: INDEX_SS(表名/别名 索引名)

5.索引全扫描

INDEX FULL SCAN 索引全扫描。单块读 。它扫描的结果是有序的,因为索引是有序的。它通常发生在

下面几种情况(注意:即使SQL满足以下情况 不一定会走索引全扫描)

a. SQL语句有order by选项,并且order by 的列都包含

在索引中,并且order by 后列顺序必须和索引列顺序一致。

b. 在进行SORT MERGE JOIN的时候,如果要查询的列通过索

引就能获得,那就不必进行全表扫描了,另外也避免了排

序,因为INDEX FULL SCAN返回的结果已经排序。

c. 当查询中有GROUP BY,并且GROUP BY 的列包含在索引中。

等待事件:db file sequential read

HINT: INDEX(表名/别名 索引名)

索引全表扫描会扫描blevel+leaf个块

6.索引快速扫描

INDEX FAST FULL SCAN 索引快速全扫描。多块读 。当SQL要查询的数据能够完全从索引中获得,那么

Oracle就不会走全表扫描了,就会走索引快速全

扫描。索引快速全扫描类似全表扫描,它可以多块

读,并且可以并行扫描。

等待事件:db file scattered read

HINT:INDEX_FFS(表名/别名 索引名)

oracle的java路径,oracle学习----访问路径相关推荐

  1. idea 启动php项目路径,关于idea中Java Web项目的访问路径问题

    说明 这里只以 servlet 为例,没有涉及到框架,但其实路径的基本原理和框架的关系不大,所以学了框架的同学如果对路径有疑惑的也可以阅读此文 项目结构 在 idea 中新建一个 Java Web 项 ...

  2. java oracle dbhelper,Java实现Oracle连接的DbHelper及相关异常

    Java中使用DbHeplper来连接Oracle数据库时,一般可以分为以下几个步骤: 第一步,导入sql包: 第二步,将Oracle中的Java驱动包添加到项目下,并生成路径,Java驱动包存放在路 ...

  3. java中oracle.链接,java连接Oracle数据库的方法解析

    本文主要对java连接Oracle数据库方法进行步骤解析,具有很好的参考价值,需要的朋友一起来看下吧 Oracle数据库先创建一个表和添加一些数据 1.先在Oracle数据库中创建一个student表 ...

  4. java调用oracle过程,JAVA调用ORACLE存储过程报错

    当前位置:我的异常网» Java Web开发 » JAVA调用ORACLE存储过程报错 JAVA调用ORACLE存储过程报错 www.myexceptions.net  网友分享于:2015-07-1 ...

  5. qt获取当前正在编辑的文件名和路径_node学习——path 路径模块

    这个模块相当重要也很常用 path 路径模块 Node.js 通过path这个内置模块,提供了一些路径操作的API,具体可以参考官方的api文档.这里列举一些常用的API. path.extname( ...

  6. 解析字符串获取路径_node学习--path 路径模块

    这个模块相当重要也很常用 path 路径模块 Node.js 通过path这个内置模块,提供了一些路径操作的API,具体可以参考官方的api文档.这里列举一些常用的API. path.extname( ...

  7. java七牛获取访问路径_七牛回调及回调鉴权

    概述 客户上传文件到七牛后,七牛服务器会响应 200 状态码,响应内容包括 hash 和 key .但是如果客户需要自定义响应内容,则可以通过设置回调来实现. 回调实现 客户端需要在上传 token ...

  8. Oracle 原理: JAVA连接Oracle数据库 (JDBC)

    首先第一步要新建JAVA工程并且到导入Oracle驱动到JAVA外部依赖包: 驱动也可以在网络上找.只要下载Oracle,Oracle驱动就存在,驱动就是 jdbc目录下的ojdbc6.jar文件., ...

  9. oracle spatial java 类库,[ Oracle Spatial 系列 ] 之一 SDO_Geometry详细说明(ZZ)

    在ArcGIS中通过SDE存储空间数据到Oracle中有多种存储方式,分别有:二进制Long Raw .ESRI的ST_Geometry以及基于Oracle Spatial的SDO_Geometry等 ...

最新文章

  1. JAVA正則表達式小总结
  2. 结对项目-四则运算 “软件”之升级版
  3. java 使用webmagic 爬虫框架爬取博客园数据
  4. 斥资2亿加码新消费,“瓜子之王”洽洽要圆“坚果梦”?
  5. SRS前需求双向追溯解决方法
  6. python json包_python编程 之 json包
  7. C/C++可变参函数示例
  8. (八)ThreadLocal的使用及原理分析
  9. MySQL 传统复制与 GTID 复制原理及操作详解
  10. 算法:从有序数组中移除重复的数据26. Remove Duplicates from Sorted Array
  11. 中国象棋博弈源代码Android,中国象棋源代码
  12. android笔画输入法的字库,献给爱好笔画输入的机友们 速度才是王道之大众码新笔画输入法...
  13. 包工协议书样本_个人承包协议书范本
  14. python打印实心菱形图案_python输入三角形三边求面积|python打印实心菱形图案
  15. c#利用GUID生成随机码
  16. 旷视face++WebAPI接口调用
  17. php 检测数组内是否有空值,判断PHP数组是否为空的代码
  18. IP.SB - 在线 IPv4 / IPv6 信息查询
  19. 北航计算机学院吴俊杰,吴俊杰老师在经管学院建院六十周年大会上的发言
  20. 前端后端nginx配置

热门文章

  1. 2.5 数据不匹配时,偏差和方差的分析-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
  2. android文章链接
  3. 【MATLAB教程案例1】通信系统中成形滤波器原理的MATLAB设计实现
  4. pip: command not found 一系列报错
  5. Linux内核中大小端判定宏
  6. 源码编译安装mysql,DDL数据定义语言的使用。
  7. sql server2005 出现一个或多个参数无效
  8. Java中使用SQLite数据库
  9. 我的NHibernate之路(1)---基本配置篇
  10. OCH\OMS\OTS\MSP\RS\SPI解释