【Oracle】-【LRU和DBWR】-LRU演算法與DBWR中的應用

bisal發表於2013-07-26
Oracle體系結構中經常看到LRU演算法,Least Recently Used,也有叫“最近最少使用頁面置換演算法”,簡單講,Oracle會將記憶體中最近不用的資料庫移出記憶體以騰出空間來載入另外的資料。演算法的實現雖然無法獲取,但對於我們很多人來說,也沒有必要了解。更重要、更實際地是知道它的作用,以及基於此對一些問題的分析與判斷。


關於這個演算法,有一種最理想的計算,就是每次調換出的記憶體是所有記憶體中最遲將被使用的,可以最大限度地推遲記憶體調換,但這種演算法是理想記憶體置換,無法實現。為了減少與理想演算法的差距,又出現了各種精妙的演算法,LRU就是其中一個。它是基於:前面記憶體中的資料很可能在後面頻繁使用,反過來說,已經很久沒用的記憶體中資料可能在未來較長時間內不會被用到,這是著名的區域性性原理,比記憶體速度還要快的cache,也是基於同樣的原理執行的。因此我們只需要在每次記憶體調換時,找到最近最少使用的記憶體資料調出記憶體,這就是LRU演算法的內容。


有的書中提到的“如果資料庫空運轉,最終DBWR會將全部緩衝區儲存區寫入磁碟”,DBWR會將dirty緩衝區寫入磁碟,使用的是LRU演算法,如上原理所述,根據DBWR觸發的若干條件,外加LRU演算法,DBWR當然會將全部buffer cache寫入磁碟。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7192724/viewspace-767165/,如需轉載,請註明出處,否則將追究法律責任。

相關文章