问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏
Oracle在缓冲区缓存中如何管理块?
Oracl缓冲区缓存中的块实质上在一个区域上管理,但有两个不同的列表指向这些块。
脏(dirty)块列表,其中的块需要由数据库块写入器(DBWn)写入磁盘。
非脏(nodirty)块列表。
在Oracle8.0及以前版本中,非脏块列表用的是一种最近最少使用(Least Recently Used,LRU)列表,所有的块按被使用的顺序列出。在Oracle8i及以后版本中,这个算法有所修改。Oracle不再按物理顺序方式来维护块列表,而是采用了一种叫作接触计数(touch count,也称使用计数)的算法。如果数据库操作命中(hit)缓存中的某个块,则会增加与之关联的计数器的值。块缓冲区不再像以前那样移到块列表的最前面,而是留在块列表中,并递增它的接触计数。
管理这些列表的整个算法相当复杂,而且随着Oracle版本的变化也在变化,并不断改进。
评论
有用 3
墨值悬赏