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;