`

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

 
阅读更多

在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

0
0
分享到:
评论

相关推荐

    Oracle+11g安装后参数规范设置.pdf

    - **说明**: 通过设置以上事件,可以关闭11g中的自动serial direct path read特性,减少不必要的直接路径读取操作,节省IO资源。同时,28401事件用于关闭用户连续输入错误密码时的延迟验证机制,防止因此产生的大量...

    Oracle 性能分析利器ASH报告收集与简析.pdf

    Oracle的Active Session History(ASH)报告是性能分析的重要工具,尤其在Oracle 11g数据库环境中。ASH报告提供了对数据库实例中活动会话的详细历史记录,帮助DBA(数据库管理员)快速定位性能问题,优化数据库操作...

    数据库性能监控

    #Core session logical reads ...direct path read direct path write #Network Traffic bytes sent via SQL*Net to client bytes received via SQL*Net from client SQL*Net roundtrips to/from client

    Oracle等待事件说明一

    "Oracle等待事件说明一"主要关注了几个关键的等待事件,包括"buffer busy waits"、"db file parallel write"、"db file single write"、"db file scattered read"、"db file sequential read"以及"direct path write...

    BLOG_Oracle_lhr_等待事件(1) User IO.pdf

    例如,在Oracle 7.0.12中大约有100多个等待事件,到了Oracle 8.0版本时增加到了约150个,而在Oracle 11g R2中,等待事件的数量已经超过了1000个。这反映了Oracle在性能诊断方面的不断进步和完善。 等待事件可以分为...

    Oracle 性能问题一般解决思路

    例如,`enqueue`事件可能表示锁竞争,`db file scattered read`可能指示全表或全索引扫描,`direct path read`或`direct path write`可能涉及外部排序,`global cache cr request`可能与RAC环境中的实例间通信有关。...

    Oracle大数据量导入(CSV导入)

    2. **直接路径插入(Direct Path Insert)** 在使用SQL*Loader时,通常会配合使用直接路径插入方法,它绕过缓存,直接将数据写入数据块,显著提高导入速度。但需要注意,这种方式可能会影响其他并发的数据库操作,...

    oracle数据泵使用详解

    - **数据库升级**:在Oracle数据库升级时,如从10G升级到11G,可使用数据泵进行数据迁移。 - **数据同步**:对于前置库和其他数据库的数据同步,尤其是大量一次性导入的数据,数据泵是理想选择。 - **表结构修改*...

    Resolving_Oracle_Latch_Contention.rar_latch contention_oracle

    5. 使用Latch-Free技术:如Direct Path Read,减少对Buffer Cache Latch的依赖。 6. 数据库版本升级:新版本的Oracle数据库可能包含优化,减少了某些Latch的使用。 五、实例分析与案例研究 "Resolving_Oracle_Latch...

    【故障处理】队列等待之TX 等待事件处理.docx

    - **Direct path read**:这是Oracle的快速路径插入,如果造成等待,可能是由于数据导入或大量DML操作。使用批量插入,或者在低并发时段进行大操作,可以减少等待。 ### 队列等待的基本知识 队列等待是数据库系统...

    oracle文本导入导出工具-ozoradts

    rows = Number of rows in conventional path bind array or between direct path data saves nolog = no logging方式导入 (默认FALSE) Export Valid Keywords: query = select语句,只支持单表查询 table = ...

    libaio-0.3.105-i386.rar

    Oracle数据库支持使用libaio进行直接路径读写(Direct Path Read/Write),避免了缓冲区管理的开销,减少了内存拷贝,提升了整体吞吐量。 1. **直接路径读(Direct Path Read)**:Oracle使用libaio进行快速的数据...

    Oracle-IO问题及性能调优

    6. **Direct Path Read (DPR)**:绕过Buffer Cache的直接读取方式,适用于大范围扫描。 7. **Asynchronous I/O (AIO)**:异步I/O操作,提高I/O吞吐量。 二、I/O问题识别 1. **高I/O等待时间**:通过`v$sysstat`...

    oracle资料

    - **格式**:DIRECT=direct_path - **默认值**:N(不使用直接路径) ##### LOG - **描述**:指定记录屏幕输出的日志文件。 - **格式**:LOG=logfile_of_screen_output ##### STATISTICS - **描述**:确定是否分析...

    oracle详解

    导入/导出是ORACLE幸存的最古老的两个命令行工具,其实我从来不认为Exp/Imp是一种好的备份方式,正确的说法是Exp/Imp只能是一个好的转储工具,特别是在小型数据库的转储,表空间的迁移,表的抽取,检测逻辑和物理...

    [word]Oracle导入导出脚本操作手册.zip

    3. **数据泵目录对象**:在Oracle中,你需要先创建一个目录对象来指定数据泵文件的位置。这通常在DBA权限下执行: ``` CREATE OR REPLACE DIRECTORY my_dir AS '/path/to/directory'; GRANT READ, WRITE ON ...

    libaio-0.3.105-2.x86_64.rpm

    Oracle数据库利用libaio实现直接路径读写(Direct Path Read/Write),绕过标准的文件系统缓存,减少I/O延迟,提高数据存取速度。特别是在大型企业级部署中,Oracle数据库需要高效、稳定的数据处理能力,libaio的...

Global site tag (gtag.js) - Google Analytics