
在Oracle中,什么是物理读和逻辑读?
当会话所需要的数据在内存的Buffer Cache中找不到,此时就要去磁盘上的数据文件中读取,这样就产生了物理读(Physical Reads),即物理读是从磁盘文件把需要的数据读入内存(SGA中的Buffer Cache)。
逻辑读(Logical Reads)表示CPU需要的数据在内存中被找到,数据被直接从内存中传入CPU执行,即逻辑读是从内存中读取。在Oracle中,逻辑读=即时读(又叫当前读,Current Read)+一致性读(Consistent Read),在“SET AUTOTRACE ON”中,逻辑读=db block gets(当前读)+consistent gets(一致性读)。即时读就是读取数据块当前的最新数据。任何时候在Buffer Cache中都只有一份当前数据块。即时读通常发生在对数据进行修改,删除操作时。这时,后台进程会给相关数据加上行级锁,并且标识数据为“脏数据”。
需要注意的是,物理读过大表现为磁盘I/O较高,逻辑读过大表现为CPU使用率过高。
& 说明:
有关物理读、逻辑读可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2140132/
● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用
● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/
● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解
● 版权所有,欢迎分享本文,转载请保留出处
● QQ:646634621 QQ群:230161599
● 题目解答若有不当之处,还望各位朋友批评指正,共同进步
长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。




