zoukankan      html  css  js  c++  java
  • Oracle buffer cache

    Buffer Cache

    timg

                       buffer cache 结构图

    HASH链

            ORACLE使用HASH算法,把buffer cache中每个buffer的buffer header串联起来,组成多条hash chain,一條hash chain由一個hash Bucket管理,hash bucket就是链的链头,从链头引出独立的双向链。一個hash buffer chains latch来保护多个hash chain

             1,每个buffer都有buffer header,buffer header指向具体的buffer

             2,hash链是双向链,串联的是buffer header

             3,先找到hash Bucket,然后扫描链上的buffer header,再定位到具体buffer

    LRU链(LRU LRU-W LRU-AUX)

           根据LRU(Least Recently User)算法,对buffer cache进行分配和换出(age out)管理

    在buffer header有一个控制结构叫TCH(touch count访问技术器),记录buffer被访问的次数,当达到某个阈值(_db_aging_hot_criteria决定),就标识为Hot块,

    注意不是每次被访问都计数,而是大约3s一次,X$BH表记录buffer相关的信息。另外,过段时间,oracle也会“冷却”Hot块,过段时间会让TCH计数递减。

    当我们需要分配一个buffer的时候,总是从LRU链冷端开始搜索,热块也可能处在冷端,扫描到标识为热块的就跳过。

    新数据写入buffer的时候,先去LRU链找到一个Clean的buffer,写入数据,然后重新挂到LRU链上,挂的位置由_db_percent_hot_default决定,默认50%,即LRU链接近中间的位置

    LRU list(replacement list)从该链查找可重用的buffer

    LRU-W list(write list)脏数据链,DBWR通过该链批量刷新到磁盘

    LRU-AUX list(LRU链的子链)LRU-w链写盘后首先挂到LRU-AUX链,分配的时候先找该链,找不到再去LRU链

    LRU-P list  这条链上的buffer 都存在一定的锁或者被其他会话PIN住

  • 相关阅读:
    linux 中实现两列数据的互换
    linux中 sort h的作用
    max 内置函数,管理uv 编辑器下面的窗口的显示情况
    时时设定 uv 面板的位置,还有就是 关于属性打开界面的大小
    判断贴图大小很好 同时可以判断文件大小
    两条线中画终点
    锁定控制器,一般在绑定的时候很多用到
    用 脚本编辑器读脚本 也是编辑脚本
    进行随机旋转用于和并东西并
    排列顶点 uv 不过有很大问题
  • 原文地址:https://www.cnblogs.com/guilingyang/p/5895273.html
Copyright © 2011-2022 走看看