ITPub博客

首页 > 数据库 > 数据库开发技术 > Managing the database buffer cache

Managing the database buffer cache

原创 数据库开发技术 作者:foreverlee 时间:2004-12-25 12:21:56 0 删除 编辑

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 ProcessDirty Block移至Dirty List.

3: 如果Dirty list超过了它自己的极限,Server Process发送信号给DBWn Dirty blockdata 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 blockLRU list 移至Dirty list中,这样可以增大一次写的效率.

Tuning goal: 尽可能使得Server ProcessMemory中找到需要的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博客 ” ,链接:http://blog.itpub.net/76065/viewspace-785466/,如需转载,请注明出处,否则将追究法律责任。

下一篇: open_cursor数量
请登录后发表评论 登录
全部评论

注册时间:2008-11-26

  • 博文量
    72
  • 访问量
    1356443