1:首先Server Process根据Hash Function查询需要的块是否在Buffer中可用.如果可用Server Process将其置于LRU list的头部.这个过程叫做一个逻辑读. 因为没有实际发生OS级的IO.如果所需块没有在Buffer中找到,Server Process 将从数据文件中读取所需数据块.
[@more@]
1:首先Server Process根据Hash Function查询需要的块是否在Buffer中可用.如果可用Server Process将其置于LRU list的头部.这个过程叫做一个逻辑读. 因为没有实际发生OS级的IO.如果所需块没有在Buffer中找到,Server Process 将从数据文件中读取所需数据块.
2: Server Process读取数据文件之前,需要检查LRU list中的空闲块,同时Server Process将Dirty Block移至Dirty List.
3: 如果Dirty list超过了它自己的极限,Server Process发送信号给DBWn 写Dirty block至data file,如果Server Process没有发现Free block,也会通知DBWn写.
4: 当Server Process找到空闲Block后,SP将把它从数据文件中读至DB buffer Cache中的Free block中,Server process再将盛有数据的Block移至LRU list中
5:如果发生一致读现象.Server Process要读取Old version block from undo segement.
6: 每三秒钟,DBWn检查需要写的数据.将Dirty block从LRU list 移至Dirty list中,这样可以增大一次写的效率.
Tuning goal: 尽可能使得Server Process在Memory中找到需要的data block
对于OLTP系统 命中率在90%以上。
命中率的计算方法:
1>
select 1-(phy.value-lob.value-dir.value)/ses.value "Cache hit ratio"
from v$sysstat ses,v$sysstat lob, v$sysstat dir,v$sysstat phy
where ses.name =' session logical reads'
and dir.name ='physical reads direct'
and lob.name ='physical reads direct (lob)'
and phy.name ='physical reads'
2> select name,(1-(physical_reads)/(consistent_gets+db_block_gets)) from v$buffer_pool_statistics
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/76065/viewspace-785466/ ,如需转载,请注明出处,否则将追究法律责任。