ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Buffer Cache 内部机制探究-理论篇

Buffer Cache 内部机制探究-理论篇

原创 Linux操作系统 作者:ziling2011 时间:2012-02-21 17:32:53 0 删除 编辑
Buffer Cache

一、 定义
Buffer cache:SGA中用来存储从数据文件中读的数据块信息
二、内存结构
1.LRU List与LRU DirtyList:为了高效的管理buffer cache中的内存数据块
①LRU: 最近最少使用的buffer header链表(可用数据块)
②LRUW(dirty list): 修改过但是还没有写入数据文件的内存数据块所对应的Buffer(也就是checkpoint queue,DBWn通过ckpt的queue将脏数据写入数据文件)
③辅助链表和主链表:8i以后改进了LRU管理方式将LRU分别增加分辅助链表和主链表(每次访问时先访问辅助链表,这样能更快速的将访问一次的块清除出去)
主辅链表的增加使用得buffer header中也增加了TCH(访问次数)oracle每访问一次TCH就加1
主辅链表进行通过buffer 的tch量进行加减,每次从主辅链表的尾部进行扫描将符合条件的buffer地址返回作为牺牲品替换新的buffer。
2.Buffer Bucket与Cache Buffer Chain:为了快速找到并确认buffer cache里有木有这个buffer(块)
①Buffer Bucket: Hash桶(将buffer header DBA hash运算)
②Cache Buffer Chain: Bucket 内部由Cache Buffer Chain(双链表)将buffer信息连起来
三、应用
当select 等dml语句发生时,oracle根据执行计划找到数据块收集数据块信息生成(buffer descriptor)buffer descriptor位于PGA中其中包括物理地址、数据块类型、数据块中对象的object id等信息,将buffer descriptor传入查询函数中,应用hash算法得到hash bucket,由引确定在哪个hash chain上,从hash chain双链表上搜buffer header直到真后一个。
 
 

 

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

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

注册时间:2011-07-18

  • 博文量
    52
  • 访问量
    112161