lucheng918的个人博客分享 http://blog.sciencenet.cn/u/lucheng918

博文

buffer cache内存结构剖析——CBC,LRU,MRU,检查点

已有 4145 次阅读 2014-3-12 20:45 |个人分类:SGA|系统分类:科研笔记

shared pool:基本结构是链。

buffer cache:同样是链。左边是链,右边是buffer

buffer cache:包含的数据有free data,clean data,dirty data刚被修改的数据还没同步到dbf。


CBC:cache buffer chain。以地址的方式将所有buffer cache上的buffer链接起来。链上放着buffer的地址,即buffer header。根据block地址找block时,需要用到CBC chain。


LRU:least recent used。对于在内存中但又不用的数据块(内存块)叫做LRU,Oracle会根据哪些数据属于LRU而将其移出内存而腾出空间来加载另外的数据。LRU将free和clean data按使用频率串起来,不常使用的放在冷端,常用的放在热端,即MRU端:most recent used。

那如果扫描过程没有在LRU List中找到free buffer怎么办?当然是从LRU List的LRU端开始清除缓冲区,如此一来就可以腾出新的空间了.


LRUw:脏块也要按照脏的频率进行排序后链接,这样方便DB writer把不常更改的buffer脏数据写回到dbf,使得buffer成为clean的数据。

检查点队列:按照第一次脏的时间点链接起来。checkpoint queue


队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。在队列这种数据结构中,最先插入在元素将是最先被删除;反之最后插入的元素将最后被删除,因此队列又称为“先进先出”(FIFO—first in first out)的线性表。

栈的特点是后进先出,能在某一端插入和删除的特殊线性表。




https://wap.sciencenet.cn/blog-780964-775409.html

上一篇:如何设置shared pool和sga大小
下一篇:buffer cache 中buffer状态
收藏 IP: 168.160.22.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-22 01:22

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部