当前位置:首页 > 开发 > 数据库 > 正文

Oracle 11g中的direct path read(原创)

发表于: 2014-06-16   作者:czmmiao   来源:转载   浏览次数:
摘要: 在11g中,全表扫描可能使用direct path read方式,绕过buffer cache,这样的全表扫描就是物理读了。 在10g中,都是通过gc buffer来读的,所以不存在direct path read的问题。direct path read较高的可能原因有:1.与直接读取相关联的等待事件。当ORACLE将数据块直接读入会话的PGA(进程全局区)中,同时绕过SGA(系统全局区)。PGA

在11g中,全表扫描可能使用direct path read方式,绕过buffer cache,这样的全表扫描就是物理读了。 在10g中,都是通过gc buffer来读的,所以不存在direct path read的问题。
direct path read较高的可能原因有:
1.与直接读取相关联的等待事件。当ORACLE将数据块直接读入会话的PGA(进程全局区)中,同时绕过SGA(系统全局区)。PGA中的数据并不和其他的会话共享。即表明,读入的这部分数据该会话独自使用,不放于共享的SGA中。
2.在排序操作(order by/group by/union/distinct/rollup/合并连接)时,由于PGA中的SORT_AREA_SIZE空间不足,造成需要使用临时表空间来保存中间结果,当从临时表空间读入排序结果时,产生direct path read等待事件。
3.使用HASH连接的SQL语句,将不适合位于内存中的散列分区刷新到临时表空间中。为了查明匹配SQL谓词的行,临时表空间中的散列分区被读回到内存中(目的是为了查明匹配SQL谓词的行),ORALCE会话在direct path read等待事件上等待。
4.使用并行扫描的SQL语句也会影响系统范围的direct path read等待事件。在并行执行过程中,direct path read等待事件与从属查询有关,而与父查询无关,运行父查询的会话基本上会在PX Deq:Execute Reply上等待,从属查询会产生direct path read等待事件。
从Oracle 9i 开始, _DB_FILE_DIRECT_IO_COUNT 这个隐含参数控制以字节(不是块)为单位的直接IO容量),这个参数可能影响direct path read的性能。默认值是1Mb,但是如果系统的max_io_size更小,那默认值也会被缩小。
可参考:Document 47324.1 Init.ora Parameter "DB_FILE_DIRECT_IO_COUNT" Reference Note。
event 10949或者设置隐含参数_serial_direct_read,两种方式可以在session或system级别设置direct path read的开关。
ALTER session SET EVENTS '10949 TRACE NAME CONTEXT FOREVER';
ALTER session SET EVENTS '10949 TRACE NAME CONTEXT  off';

 

参考至:http://blog.sina.com.cn/s/blog_61cd89f60102eeen.html

               http://blog.chinaunix.net/uid-23622436-id-3248624.html

               http://soft.chinabyte.com/database/459/12363959.shtml
               http://blog.csdn.net/bisal/article/details/12417475

               http://www.confio.com/logicalread/oracle-db-file-direct-io-count-initialization-parameters-mc01/#.U8oqiLEYRMY

如有错误,欢迎指正

邮箱:czmcj@163.com

Oracle 11g中的direct path read(原创)

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
Overview In Oracle Database 10g, Oracle introduced the new Transparent Data Encryption (TDE)
Automatic Diagnostic Repository The automatic diagnostic repository tracks all problems and i
Oracle中的RBO Oracle的优化器有两种优化方式: 基于规则的优化方式:Rule-Based Optimization(RBO
前言 表是最常用的模式对象,也是最重要的数据对象之一。甚至在很多时候,我们说到数据库操作,就以
串行化 概述 串行化 - 数据库系统本身是一个多用户并发处理系统,在同一个时间点上,可能会有多个用
alter tablespace spacename read only; 表空间在READ ONLY 模式下表可以被DROP掉,原因是:DROP 操
read()与read(byte[] b)这两个方法在抽象类InputStream中前者是作为抽象方法存在的,后者不是,JDK A
原文: InputStream中read()与read(byte[] b) read()与read(byte[] b)这两个方法在抽象类InputStream
前言 本文用到了oracle中的dual表,它是一个虚拟表。具体可以查看下面链接: Oracle中的dual表1 百
前言 好些天,没有更新这个系列了。最近工作出差,而且在几个城市走来走去,在而且是自己也在学习Sp
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号