(一)、物理读:把数据从数据块读取到buffer cache中

1、第一次查询一个表t

select * from t ;
2、第二次查询:
select * from t;
第一次查询有6次物理读,第二次查询有0个物理读。
当数据块第一次读取到,就会缓存到buffer cache 中,而第二次读取和修改该数据块时就在内存buffer cache 了。
3、数据块被重新读入buffer cache ,
这种发生在如果有新的数据需要被读入Buffer Cache中,而Buffer Cache又没有足够的空闲空间,Oracle就根据LRU算法将LRU链表中LRU端的数据置换出去。当这些数据被再次访问到时,需要重新从磁盘读入。
下面来实验:
清空缓冲区:alter session set events 'immediate trace name flush_cache';
再来查询t表:又重新进行了6次物理读。
(二)、逻辑读:指从Buffer Cache中读取数据块
1、及时读:即时读即读取数据块当前的最新数据。任何时候在Buffer Cache中都只有一份当前数据块。即时读通常发生在对数据进行修改、删除操作时。这时,进程会给数据加上行级锁,并且标识数据为“脏”数据。
2、数据一致性读:Oracle是一个多用户系统。当一个会话开始读取数据还未结束读取之前,可能会有其他会话修改它将要读取的数据。如果会话读取到修改后的数据,就会造成数据的不一致。一致性读就是为了保证数据的一致性。在Buffer Cache中的数据块上都会有最后一次修改数据块时的SCN。如果一个事务需要修改数据块中数据,会先在回滚段中保存一份修改前数据和SCN的数据块,然后再更新Buffer Cache中的数据块的数据及其SCN,并标识其为“脏”数据。当其他进程读取数据块时,会先比较数据块上的SCN和自己的SCN。如果数据块上的SCN小于等于进程本身的SCN,则直接读取数据块上的数据;如果数据块上的SCN大于进程本身的SCN,则会从回滚段中找出修改前的数据块读取数据。通常,普通查询都是一致性读。
总结逻辑读:

Oracle性能调优中,逻辑读是个很重要的度量值,它不仅容易收集,而且能够告诉我们许多关于数据库引擎工作量的信息。逻辑读是在执行SQL语句的时候从高速缓存中读取的块数。

逻辑读在Oracle调优中有四个好处:

(1)逻辑读是受制于CPU能力的操作,因而,很好的反映了CPU的使用情况。

(2)逻辑读可能导致物理读,因而,通过减少逻辑读的数量,很可能会降低I/O操作次数。

(3)逻辑读是受制于串行的操作,既然经常要考虑多用户负载的优化,最小化逻辑读将有利于避免扩展性问题。

(4)逻辑读的数量可以通过SQL跟踪文件和动态性能视图在SQL语句以及执行计划级别获得。
     我们都知道,数据块是oracle最基本的读写单位,但用户所需要的数据,并不是整个块,而是块中的行,或列.当用户发出SQL语句时,此语句被解析执行完毕,就开始了数据的抓取阶段,在此阶段,服务器进程会先将行所在的数据块从数据文件中读入buffer cache,这个过程叫做物理读.物理读,每读取一个块,就算一次物理读.当块被送进buffer cache后,并不能立即将块传给用户,因为用户所需要的并不是整个块,而是块中的行.从buffer cache的块中读取行的过程,就是逻辑读.为了完成一次逻辑读,服务器进程先要在hash表中查找块所在的buffer cache  链.找到之后,需要在这个链上加一个cache buffer chains 闩,加闩成功之后,就在这个链中寻找指定的块,并在块上加一个pin锁.并释放cache buffer chains闩.然后就可以访问块中的行了.服务器进程不会将块中所有满足条件的行一次取出,而是根据你的抓取命令,每次取一定数量的行.这些行取出之后,会经由PGA传给客户端用户.行一旦从buffer cache中取出,会话要释放掉在块上所加的PIN.本次逻辑读就算结束.如果还要再抓取块中剩余的行,服务器进程要再次申请获得cache bufffer链闩.再次在块上加PIN.这就算是另外一次逻辑读咯.也就是说,服务器进程每申请一次cache buffer链闩,就是一次逻辑读.而每次逻辑读所读取的行的数量,可以在抓取命令中进行设置.
     逻辑读和Cache buffer chains闩关系密切,TOM曾有文章提到,进程每申请一次Cache buffer chains闩,就是一次逻辑读。但是,逻辑读并不等同于Cache buffer chains闩,每次逻辑读,在9i中至少需要获得两Cache buffer chains闩。逻辑读是指在Hash表中定位块的这个过程。

查询表块的分布:
select bk,max(id),min(id) from (select dbms_rowid.rowid_block_number(rowid) bk,id from temp) group by bk ;
set arraysize 15:设置查询的批量为15。

oracle的逻辑读、物理读总结相关推荐

  1. (未看)ORACLE物理读和逻辑读(SET AUTOTRACE ON 部分参数解释)[逻辑IO只有逻辑读,没有逻辑写]

    逻辑IO只有逻辑读,没有逻辑写 ORACLE物理读和逻辑读(SET AUTOTRACE ON 部分参数解释) set autotrace 产生部分信息解读的官方文档基本的定义为如下: recursiv ...

  2. oracle 优化逻辑读过高,详述逻辑读与arraysize的关系

    我们都知道,数据块是oracle最基本的读写单位,但用户所需要的数据,并不是整个块,而是块中的行,或列.当用户发出SQL语句时,此语句被解析执行完毕,就开始了数据的抓取阶段,在此阶段,服务器进程会先将 ...

  3. oracle 优化逻辑读过高(实战详解:逻辑读与arraysize关系)

    数据块是oracle最基本的读写单位,但用户所需要的数据,并不是整个块,而是块中的行,或列. 当用户发出SQL语句时,此语句被解析执行完毕,就开始了数据的抓取阶段,在此阶段,服务器进程会先将行所在的数 ...

  4. [MS Sql Server术语解释]预读,逻辑读,物理读

    在MSSQL中使用 SET STATISTICS IO ON 打开IO统计功能之后,每次执行完一个查询就会在下面的[消息]面板中显示本次查询IO的统计信息. (0 行受影响) 表 'demo'.扫描计 ...

  5. 浅谈SQL Server逻辑读、物理读、预读

    目录 (一)前言 (二)正文 1. SQL Server的数据存储方式 2. 剖析IO统计信息 (1)初识三读 (2)逻辑读.物理读.预读的关系 (3)看图理解[逻辑读].[物理读].[预读] (三) ...

  6. oracle 物理读,逻辑读的理解

    1.物理读(physical read) 当数据块第一次读取到,就会缓存到buffer cache 中,而第二次读取和修改该数据块时就在内存buffer cache 了 以下是例子: 1.1  第一次 ...

  7. Oracle的逻辑读和物理读

    在我们优化oracle的时候,经常会用到各种各样的技术手段,其中使用statspack和explain plan是最常见的了. 当我们使用这两个常见的工具来进行优化调整的时候,经常会看到physica ...

  8. 在Oracle中,什么是物理读和逻辑读?

    在Oracle中,什么是物理读和逻辑读? 当会话所需要的数据在内存的 Buffer Cache 中找不到,此时就要去磁盘上的数据文件中读取,这样就产生了物理读( Physical Reads ),即物 ...

  9. Oracle 物理读 逻辑读 一致性读 当前模式读总结浅析

    Oracle 物理读 逻辑读 一致性读 当前模式读总结浅析 在ORACLE数据库中有物理读(Physical Reads).逻辑读(Logical Reads).一致性读(Consistant Get ...

最新文章

  1. slub object 内存布局
  2. mysql之基础操作grant、show、repair、log_error等
  3. Google V8 编译方法(visual c++ 2008 express)(学习+原创)
  4. PostgreSQL 10.1 手册_部分 III. 服务器管理_第 16 章 从源代码安装_16.5. 安装后设置...
  5. CPU位数、操作系统位数、应用程序位数浅析
  6. 2047.句子中的有效单词数
  7. gtest的Linux使用(Google test)
  8. ssh登录 The authenticity of host 192.168.0.xxx can't be established. 的问题
  9. .net 考试系统人一多就断开了_【项目】Java在线考试系统
  10. 金山android高级面试,金山视频云/KSYMediaPlayer_Android
  11. 在统计模式识分类问题中,当先验概率未知时,可以使用
  12. CHK文件恢复工具v2.0绿色版
  13. tp对接支付宝转账提现
  14. 计算关联系数matlab,matlab相关系数计算公式
  15. 好看又实用的压缩文件管理器——Bandizip
  16. iphone开源汇总
  17. spm12预处理步骤及知识点总结
  18. Android 报错Failed to load native library: XXXX_so
  19. Android 静音检测
  20. 超越“双十一”—— ebay百万TPS支付账务系统的设计与实现

热门文章

  1. 互联网金融产品的常见缺陷和预防
  2. 如何去掉收费的wma格式
  3. 羞,Java 字符串拼接竟然有这么多姿势
  4. 【Selenium+Pytest+allure报告生成自动化测试框架】附带项目源码和项目部署文档
  5. 昨天整天在刻碟,今天要继续学习才行了。。。
  6. 苹果手机上网很慢_苹果手机怎么边投屏边上网
  7. 复制+粘贴->集群就绪 | 微软视角hpc4you_toolkit使用演示
  8. 特征金字塔网络 FPN
  9. 0基础学习VR全景平台篇第29章:场景功能-音乐解说
  10. XXL-Job 介绍