oracle(六) physical read and logical read

1.物理读:从disk到buffer cache。其产生的主要原因是:

 (1) 在数据库高速缓存中不存在这些块
 (2) 全表扫描
 (3)磁盘排序

2.oracle中读写disk的单位是block。而用户需要的是其中几行或几列,从buffer cache中提取行(列)的过程,就是逻辑读

 (1)当前读:读取block中的最新数据

 (2)一致读:为保证一致性,buffer cache中的block 都会有最后一次修改时的scn, 当某个进程读取block时,把进程的scn与block的scn比较

     进程的scn >= block的scn   则直接读取block

   进程的scn  < block的scn  则从undo段中找

3.consistent get示例

4.在traceonly的统计中有db block gets

consistent gets : 通过select 读的次数
db block gets : 通过select for update读的次数。 其实可以就是current read?!

logical read = consistent gets + db block gets 

4.示例

(1)select ename from emp;

(2)再次执行 select ename from emp;

(3)select ename from emp for update;

(4)update emp set sal = sal * 1.1 where empno = 7788;

原文地址:https://www.cnblogs.com/yuyutianxia/p/3328234.html