数据缓存区管理
来源:互联网 发布:全国凤楼兼职信息源码 编辑:程序博客网 时间:2024/05/21 12:47
数据缓存区(database buffer cache)中的缓冲区(buffer)通过两个
列表管理:待写列表(write list)和最近最少使用列表(least recently
used(LRU)list)。待写列表中记录的是脏缓冲区(dirty buffer),即
其中数据已被修改且尚未写入磁盘的缓冲区。最近最少使用列表中记录
的是可用缓冲区(free buffer),锁定缓冲区(pinned buffer),及还
没被移入待写列表的脏缓冲区。可用缓冲区内的数据无需继续保留,可
以用于存储新数据。而锁定缓冲区是正在被访问的缓冲区。
当某个 Oracle 进程访问一块缓冲区时,就会将其移动到 LRU 列表的最
近使用(most recently used,MRU)端。随着更多被访问的缓冲区移动
到 LRU 列表的 MRU 端,较早前被访问过的脏缓冲区就会逐渐向 LRU 列
表的 LRU 端移动。
当 Oracle 的用户进程(user process)首次查询某块数据时,她将首
先在数据缓存区内进行搜索。如果用户进程在数据缓存区内找到了所需
的数据(称为缓存命中(cache hit)),就可以直接从内存中访问数据。
如果用户进程不能在数据缓存区中找到所需的数据(称为缓存失效
(cache miss)),则需要从磁盘中的数据文件里将相应的数据块复制到
缓存中才能进行访问。缓存命中时的数据访问速度远远大于缓存失效时
的速度。
用户进程将数据块读入数据缓存区之前首先要准备好可用缓冲区。用户
进程从 LRU 列表的 LRU 端开始对其进行搜索。这个搜索过程将一直持
续,直到找到可用缓冲区或达到缓存搜索操作的预设限定值为止。
当用户进程在对 LRU 列表的搜索过程中遇到脏缓冲区时,她会先将此类
缓冲区移入待写列表,之后再继续搜索。当用户进程找到了可用缓冲区
时,就会将数据块从磁盘写入缓冲区,并将此缓冲区移到 LRU 列表的
MRU 端。
如果 Oracle 用户进程对 LRU 列表的搜索操作达到了预设的限定值而
仍旧没有找到可用缓冲区,那么进程将停止搜索并通知 DBW0 后台进程
将部分脏缓冲区写入磁盘。
0 0
- 数据缓存区管理
- 数据缓存区的管理
- C#浅谈数据缓存管理
- 实时数据缓存管理的初步设计
- 频道管理+小圆点+ViewPager+数据缓存
- 缓存管理
- 缓存管理
- 缓存管理
- 缓存管理
- 缓存管理
- 缓存管理
- 缓存管理
- 前后台对于海量数据的缓存优化管理
- 大数据之(二)——缓存优化管理
- 后台管理实现刷新API层缓存数据
- binder驱动-接收缓存区管理
- binder驱动-接收缓存区管理
- 数据缓存
- 耸手滤展靡程姓慷鹊兰苑瓮歉汛教
- EM配置
- 虚拟机安装系统后——配置方法
- 靥训鹊涡憾鸥平菜俺衅惨雇味液俜
- 绑定变量不一定好
- 数据缓存区管理
- oracle-rdbms-server-11gR2-preinstall 说明
- 虚拟机上网
- 安装配置 mysql+apache+php
- 皇姿烤写妓涣烁蘸腋偌偾汗鹊寺段
- jvm原理
- centOS passwd 无效
- 接口和抽象类
- scala——trait