Oracle buffer cache
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的更多相关文章
- Oracle buffer cache与相关的latch等待事件
buffer cache与相关的latch等待事件 1.buffer cache 2.latch:cache buffers lru chain 3.latch:cache buffers chain ...
- oracle buffer cache的基本原理
Buffer cache 的原理 一. 1·)当一个服务器进程需要读数据到buffer cache中时,首先必须判断该数据在buffer 中是否存在,如果存在且可用,则获取该数据,根据lru算法在lr ...
- Oracle优化 -- 关于Database Buffer Cache相关参数DB_CACHE_SIZE的优化设置
select size_for_estimate, buffers_for_estimate ,ESTD_PHYSICAL_READ_factor,ESTD_PHYSICAL_READS from v ...
- lnux内核的malloc实现(Oracle的cache buffer影子)
lnux内核的malloc实现(Oracle的cache buffer影子) 本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/artic ...
- oracle查询buffer cache中undo大小
1.Does undo buffer exists or changes will directly write to undo datafiles? Undo blocks are database ...
- ORACLE性能优化- Buffer cache 的调整与优化
Buffer Cache是SGA的重要组成部分,主要用于缓存数据块,其大小也直接影响系统的性能.当Buffer Cache过小的时候,将会造成更多的 free buffer waits事件. 下面将具 ...
- 深入浅出Oracle学习笔记:Buffer Cache 和Shared pool
Buffer cache 和 share pool 是sga中最重要最复杂的部分. 一.Buffer Cache 通常数据的读取.修改都是通过buffer cache 来完成的.buffer cach ...
- 相克军_Oracle体系_随堂笔记005-Database buffer cache
本章主要阐述SGA中的Database buffer cache. Buffer cache { 1.pin (读写瞬间的状态) 2.clean 3.dirty 4.unused } --Databa ...
- Buffer Cache
Buffer Cache Buffer Cache是SGA区中专门用于存放从数据文件中读取的的数据块拷贝的区域.Oracle进程如果发现需要访问的数据块已经在buffer cache中,就直接读写内存 ...
随机推荐
- KVC 与 KVO 理解
KVC 与 KVO 是 Objective C 的关键概念,个人认为必须理解的东西,下面是实例讲解. Key-Value Coding (KVC) KVC,即是指 NSKeyValueCoding,一 ...
- 获取编辑框字符串,传入Intent
private EditText etData; etData = (EditText) findViewById(R.id.etData); Intent i = new Intent(MainAc ...
- JavaScript Window对象属性
window 代表浏览器中一个打开的窗口. Window的属性 属性 描述 closed 获取引用窗口是否已关闭. defaultStatus 设置或获取要在窗口底部的状态栏上显示的缺省信息. dia ...
- Centos7 修改SSH 端口
修改/etc/ssh/sshd_config vi /etc/ssh/sshd_config #Port 22 //这行去掉#号,防止配置不好以后不能远程登录,还得去机房修改,等修改以后的端口能使用以 ...
- 一个不错的定位API网站
2015年5月2日 15:36:31 星期六 http://www.haoservice.com/
- Java for LeetCode 231 Power of Two
public boolean isPowerOfTwo(int n) { if(n<1) return false; while(n!=1){ if(n%2!=0) return false; ...
- Dnsmasq安装与配置-搭建本地DNS服务器 更干净更快无广告DNS解析
默认的情况下,我们平时上网用的本地DNS服务器都是使用电信或者联通的,但是这样也导致了不少的问题,首当其冲的就是上网时经常莫名地弹出广告,或者莫名的流量被消耗掉导致网速变慢.其次是部分网站域名不能正常 ...
- suse11 sp2 搭建openvpn
什么是VPN IP机制仿真出一个私有的广域网"是通过私有的隧道技术在公共数据网络上仿真一条点到点的专线技术.所谓虚拟,是指用户不再需要拥有实际的长途数据线路,而是使用Internet公众数据 ...
- VC++ 之常见内存异常值
0 VC++ 常见的内存异常值 * 0xcccccccc : Used by Microsoft's C++ Debugging runtime library to mark uninitialis ...
- 【编程题目】如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)
转自:http://blog.csdn.net/vast_sea/article/details/8167968 看上去似乎任何已知的算法都无法做到,如果谁做到了,那么所有的排序方法:QuickSor ...