(转)OCP知识点讲解 之 LRU链与脏LRU链
?
?
?
总之,free?buffer?waits事件发生的主要原因就是在LRU中寻找牺牲者的时间过长。如果 ? ? 这个等待事件频繁出现,说明Buffer?cache中脏块太多了,这通常是DBWn写刷新速度慢造成的。我们应该将DBWn更频繁的被唤醒去刷新脏块,好让它们变干净、可以被选为牺牲者。我们不应该让脏块从脏LRU链中被刷新,因为这时通常会出现free?buffer?inspected。脏LRU链并不是为了将脏块集中到一起,让DBWn去刷新的,我们上面的图例中已经讲过,将脏块移动到脏LRU链中,是为了减少下一次寻找牺牲者时,所需搜寻的块。Oracle中另有一个链表,准门用来记录脏块,好让DBWn定期刷新,这个链表是检查点队列。