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;

 

posted @ 2013-09-18 12:56  等风来。。  Views(791)  Comments(0Edit  收藏  举报
------------------------------------------------------------------------------------------------------------ --------------- 欢迎联系 x.guan.ling@gmail.com--------------- ------------------------------------------------------------------------------------------------------------