数据缓存区的管理

数据缓存区,database buffer cache,分为脏缓存区(dirty buffer)和可用缓存区(free buffer),分别使用的是待写列表和最近最少使用(LRU- least recent used)列表管理。


脏缓存区保存的是已经修改但是还未写入到磁盘的数据;
可用缓存区分为可用区和锁定区,可用区是干净无数据的,锁定区表示目前正在被使用;
当一个新进程访问一个数据,例如发出了一条select语句,那么oracle首先在缓存区搜索是否已经有存在所需要的数据,如果找到了那么就可以直接在内存访问数据,这个动作就中cache hit;
如果没用找到,那么需要从磁盘对应的数据文件中读入缓存中,这个动作叫做 cache miss,这个步骤涉及到了I/0操作;
从数据文件读入缓存区之前,需要先找到对应的空间来存放,oracle一直搜索缓存区(从LRU开始搜索),直到找到可用缓存区或者达到缓存区搜索操作的预设限定值为止,
在这个搜索过程中,遇到了一些脏数据,将会将它们移到待写列表,然后继续搜索,当找到可用缓存区后,进程将数据块从磁盘写入缓存区,并将此缓存区移到LRU列表的MRU端(most recent used);
如果一直都搜索不到可用区域,将激活DBW0进程去执行数据块写动作,将脏数据写入磁盘,以便腾出足够的空间给下次缓存区操作使用。
这既是一个大概的过程吧。

针对全表扫描的动作,和上述有所不同,全表(full scan)的读入的数据,oracle认为这是暂时、临时需要的数据,因此从磁盘读入的时候将被放到LRU列表的LRU端,以便最快的被移除LRU。

-The End-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值