oracle 成长历程-3.6 Working set详解

3.6 Working set详解

oracle引入了working set的概念。每个working set都具有它自己的一组LRULRUW链表。每个working set都由一个名为“cache buffers lru chain”的latch(也叫做lru latch)来治理,所以从这个意义上说,每一个lru latch就是一个working set。而每个被加载到buffer cachebuffer header都以轮询的方式挂到working set上去。也就是说,当buffer cache加载一个新的数据块时,其对应的buffer header会去找一个可用的lru latch,假如没有找到,则再找下一个lru latch,直到找到为止。假如轮询完所有的lru latch也没能找到可用的lru latch,该进程只有等待latch free等待事件,同时出现在v$session_wait中,并增加“latch misses”。假如启用了多个DBWR后台进程的话,每个DBWR进程都会对应一个不同的working set,而且每个DBWR只会处理分配给它的working set,不会处理其他的working set

数据缓冲区中工作集的个数是由cache buffers lru chain latch的个数决定的。而lru latch的数量是由一个隐藏参数:_db_block_lru_latches决定的。该参数缺省值为DBWR进程的数量×8。该参数最小必须为8,假如强行设置比8小的数值,oracle将忽略你设置的值,而使用8作为该参数值。通过内部视图x$kcbwds (kernelcachebufferworking setsdescriptors)可以知道工作集的个数。x$kcbwdsset_latc的值就是v$latch_childrenaddr列。

一个lru latch就是一个working set,那么working set的数量也就是lru latch的数量。

一个working set 示意图如下所示:

fj.png未命名.JPG

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/347643/viewspace-620122/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/347643/viewspace-620122/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值