ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle 成长历程-第三章:内存组件详解-buffer cache-概述及相关术语-2

oracle 成长历程-第三章:内存组件详解-buffer cache-概述及相关术语-2

原创 Linux操作系统 作者:qwj801207 时间:2009-11-17 19:12:13 0 删除 编辑

11、    LRU list 由内部参数_db_block_lru_latches控制, 8i以前,只有一个list在cache里。从Oracle8开始,CKPTQ(checkpoint queues) 和FQ (file queues)被引入。随着异步DBWn引入,list的管理也随之变化。现在正确称呼,应该是“working sets,”,包含几个不同的LRU lists。每个LRU是受cache buffers lru chain latch,保护的。

12、    LRU Lists与working set

n   每一对LRU/LRUW称为一个working set,buffer通过循环使用的方式分配到这些working set中。在高负载的读取和过多的LRU扫描下,LRU latch可能成为一个瓶颈。此外,LRU latch在多路并发系统中也不好衡量。应为多个CPU可能都会请求单独的LRU latch。通过设置内部参数_DB_BLOCK_LRU_LATCHES,可以改善LRU的竞争情况。每个LRU latch都是一个working set。每个working set拥有自己的链表,管理属于它的buffer。如果一个latch不能访问,那么就会转向下一个,直到获得一个成功的latch。在事件管理中,如果请求latch失败,那么miss就会增加。LRU latch的请求最初是NOWAIT模式,如果在它请求完所有latch都仍然没有成功后,就会变为WAIT模式。

n   进程访问所有的latch直到它获得一个LRU latch。在多个DBWR的环境下,每个DBWR都有自己的LRU/LRUW,通过设置db_writer_processes可以更改DBWR的数目。

13、    Working Sets

n   Working Sets = DBWRs x Maximum number of buffer pools (8).

n   它包含如下list:

Ø  LRU:

Ø  LRU-W:记录dirty buffer

Ø  LRU-P:Ping list(RAC)

Ø  LRU-XO::对象重用list,针对drop和truncate

Ø  LUR-XR:块重用list

Ø  Thread CKPT queue:线程CKPT buffer

Ø  File CKPT queue:文件CKPT buffer queue

Ø  Recovery CKPT queue:执行恢复的块

14、    LRU和buckets/chains不同:

n   用于寻找某一指定的hash buckets/chains

n   LRU提供寻找空闲buffer的方法,从list尾部开始找。

n   Buffer header内容可以通过访问X$BH表来访问。

15、    Buffer Get

请求一个buffer,首先会填充一个buffer descriptor,步骤如下:

n   填充一个buffer descriptor

n   指定buffer的占有模式

n   缓存数据块

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

请登录后发表评论 登录
全部评论

注册时间:2009-11-16

  • 博文量
    23
  • 访问量
    21637