合 在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中都只有一份当前数据块。即时读通常发生在对数据进行修改,删除操作时。这时,后台进程会给相关数据加上行级锁,并且标识数据为“脏数据”。