直接路径读取对于延迟块清除的影响

简介:
在Oracle 11g版本中串行的全表扫描可能使用直接路径读取(direct path read)的方式取代之前版本中一直使用的DB FILE SCATTERED READ, 显然direct path read具备更多的优势: 1. 减少了对栓的使用,避免可能的栓争用 2.物理IO的大小不再取决于buffer_cache中所存在的块;试想某个8个块的extent中1,3,5,7号块在高速缓存中,而2,4,6,8块没有被缓存,传统的方式在读取该extent时将会是对2,4,6,8块进行4次db file sequential read,这是一种十分可怕的状况,其效率往往要比单次读取这个区间的所有8个块还要低得多,虽然Oracle为了避免这种情况总是尽可能的不缓存大表的块(读入后总是放在队列最冷的一端);而direct path read则可以完全避免这类问题,尽可能地单次读入更多的物理块。 当然直接路径读取也会引入一些缺点: 1.在直接路径读取某段前需要对该对象进行一次段级的检查点(A segment checkpoint). 2.可能导致重复的延迟块清除操作(我们假设你了解delayed block cleanout是什么). metalink 文档 [ID 793845.1]  对该新版本中的变化进行了描述:

Applies to:

Oracle Server - Enterprise Edition - Version: 11.1.0.6 to 11.1.0.7 This problem can occur on any platform.

Symptoms

After


本文转自maclean_007 51CTO博客,原文链接:

http://blog.51cto.com/maclean/1277105


相关文章
|
3月前
|
存储 编译器 C语言
如何在 C 语言中判断文件缓冲区是否需要刷新?
在C语言中,可以通过检查文件流的内部状态或使用`fflush`函数尝试刷新缓冲区来判断文件缓冲区是否需要刷新。通常,当缓冲区满、遇到换行符或显式调用`fflush`时,缓冲区会自动刷新。
|
6月前
|
存储 监控 安全
JVM内存问题之如何比较不同时间点的pmap输出以检查新增或变大的内存段
JVM内存问题之如何比较不同时间点的pmap输出以检查新增或变大的内存段
|
8月前
|
存储 文件存储
<文件操作> 文件的打开与关闭,顺序读写,随机读写,二进制文件,读取结束的判定,文件缓冲区
<文件操作> 文件的打开与关闭,顺序读写,随机读写,二进制文件,读取结束的判定,文件缓冲区
53 1
有 3 个进程 P1、P2、P3 协作解决文件打印问题。P1 将文件记录从磁盘读入内存的缓冲区 1,每执行一次读一个记录 ;P2 将缓冲区 1 中的内容复制到缓冲区 2 中,每执行一次复制一个记录 ;
有 3 个进程 P1、P2、P3 协作解决文件打印问题。P1 将文件记录从磁盘读入内存的缓冲区 1,每执行一次读一个记录 ;P2 将缓冲区 1 中的内容复制到缓冲区 2 中,每执行一次复制一个记录 ;
重复文件清除工具,硬盘内存拯救者。。。
重复文件清除工具,硬盘内存拯救者。。。
|
存储 编译器 C语言
缓冲区刷新在 C++ 中意味着什么?
缓冲区刷新是将计算机数据从临时存储区域传输到计算机的永久内存。例如,如果我们对文件进行任何更改,我们在一台计算机屏幕上看到的更改会临时存储在缓冲区中。
193 0
C++中的拷贝控制操作
C++中的拷贝控制操作
166 0
C++中的拷贝控制操作
|
SQL
[20180626]延迟块清除与只读表.txt
[20180626]延迟块清除与只读表.txt --//以前测试过延迟块清除与只读表空间的情况.今天测试只读表的情况. --//链接:[20150409]只读表空间与延迟块清除.
1275 0