暂无图片
Oracle在缓冲区缓存中如何管理块?
我来答
分享
胡武
2023-02-15
Oracle在缓冲区缓存中如何管理块?

Oracle在缓冲区缓存中如何管理块?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新

Oracl缓冲区缓存中的块实质上在一个区域上管理,但有两个不同的列表指向这些块。

脏(dirty)块列表,其中的块需要由数据库块写入器(DBWn)写入磁盘。

非脏(nodirty)块列表。

在Oracle8.0及以前版本中,非脏块列表用的是一种最近最少使用(Least Recently Used,LRU)列表,所有的块按被使用的顺序列出。在Oracle8i及以后版本中,这个算法有所修改。Oracle不再按物理顺序方式来维护块列表,而是采用了一种叫作接触计数(touch count,也称使用计数)的算法。如果数据库操作命中(hit)缓存中的某个块,则会增加与之关联的计数器的值。块缓冲区不再像以前那样移到块列表的最前面,而是留在块列表中,并递增它的接触计数。

管理这些列表的整个算法相当复杂,而且随着Oracle版本的变化也在变化,并不断改进。

暂无图片 评论
暂无图片 有用 3
暂无图片
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏