Buffer Cache

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住

Oracle buffer cache的更多相关文章

  1. Oracle buffer cache与相关的latch等待事件

    buffer cache与相关的latch等待事件 1.buffer cache 2.latch:cache buffers lru chain 3.latch:cache buffers chain ...

  2. oracle buffer cache的基本原理

    Buffer cache 的原理 一. 1·)当一个服务器进程需要读数据到buffer cache中时,首先必须判断该数据在buffer 中是否存在,如果存在且可用,则获取该数据,根据lru算法在lr ...

  3. Oracle优化 -- 关于Database Buffer Cache相关参数DB_CACHE_SIZE的优化设置

    select size_for_estimate, buffers_for_estimate ,ESTD_PHYSICAL_READ_factor,ESTD_PHYSICAL_READS from v ...

  4. lnux内核的malloc实现(Oracle的cache buffer影子)

    lnux内核的malloc实现(Oracle的cache buffer影子) 本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/artic ...

  5. oracle查询buffer cache中undo大小

    1.Does undo buffer exists or changes will directly write to undo datafiles? Undo blocks are database ...

  6. ORACLE性能优化- Buffer cache 的调整与优化

    Buffer Cache是SGA的重要组成部分,主要用于缓存数据块,其大小也直接影响系统的性能.当Buffer Cache过小的时候,将会造成更多的 free buffer waits事件. 下面将具 ...

  7. 深入浅出Oracle学习笔记:Buffer Cache 和Shared pool

    Buffer cache 和 share pool 是sga中最重要最复杂的部分. 一.Buffer Cache 通常数据的读取.修改都是通过buffer cache 来完成的.buffer cach ...

  8. 相克军_Oracle体系_随堂笔记005-Database buffer cache

    本章主要阐述SGA中的Database buffer cache. Buffer cache { 1.pin (读写瞬间的状态) 2.clean 3.dirty 4.unused } --Databa ...

  9. Buffer Cache

    Buffer Cache Buffer Cache是SGA区中专门用于存放从数据文件中读取的的数据块拷贝的区域.Oracle进程如果发现需要访问的数据块已经在buffer cache中,就直接读写内存 ...

随机推荐

  1. django的ajax对应前端的瀑布流方法

    html {% load xx %} <!DOCTYPE html> <html lang="en"> <head> <meta char ...

  2. C# 毕业证书打印《二》

    当证书的打印功能得以实现,最关键的功能便是数据. 通过对打印的了解,打印中最关键的功能便是打印事件中的方法. private void pd_PrintPage(object sender, Prin ...

  3. 新建samba配置步骤

    Linux系统默认已经安装了Samba,但是没有安装Samba服务: 1,先查看安装情况:rpm -qa|grep samba 根据系统的安装情况选择下载或者通过光驱安装所缺的rpm包. 我的安装情况 ...

  4. CEF3开发者系列之进程和线程

    CEF3是一个多进程架构框架,如果有了解过chromium的进程架构的,那么就很容易了解CEF3的多进程了.打开CEF3源代码中发布的cefclient实例,如果打开的页面带有flash或者其他插件. ...

  5. (转)C++0x语言新特性一览

    转自:http://blog.csdn.net/zwvista/article/details/2429781 原文请见http://en.wikipedia.org/wiki/C%2B%2B0x. ...

  6. PHP生命周期

    2015-08-19 15:05:30 周三 一篇很好的文章 PHP内核探索 总结一下 1. 模块初始化 MINIT 各个PHP模块/扩展初始化内部变量, 告诉PHP调用自己的函数时, 函数体在哪里( ...

  7. vmstat uptime 系统状态脚本

    #!/bin/bash # # Command :vmstat,uptime #Capture_Stats - Gather System Performance Statistics ####### ...

  8. Greedy:Paint Color(AOJ 0531)

    涂颜料 题目大意:在一个1000000*1000000的矩阵中放入几块木板,问你这些木板把矩阵划分成了几个区域?输入会给左下角和右上角的坐标,输入W==0且H==0结束. 这一题是书上的作业题,书上有 ...

  9. codeforces 582A. GCD Table 解题报告

    题目链接:http://codeforces.com/problemset/problem/582/A 网上很多题解,就不说了,直接贴代码= = 官方题解: http://codeforces.com ...

  10. Linux中环境变量文件及配置(转载)

    一.环境变量文件介绍 转自:http://blog.csdn.net/cscmaker/article/details/7261921 Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登 ...