1.cache hit and cache miss
當使用者第一次向資料庫發出查詢資料的請求的時候,資料庫會先在緩衝區中查詢該資料,如果要訪問的資料恰好已經在緩衝區中(我們稱之為cache hit)那麼就直接用緩衝區中讀取該資料.
反之如果緩衝區中沒有使用者要查詢的資料那麼這種情況稱之為cache miss,在這種情況下資料庫就會先從磁碟上讀取使用者要的資料放入緩衝區,使用者再從緩衝區讀取該資料.
很顯然從感覺上來說cache hit會比cache miss時訪問速度快.
2.lru(最近最少使用演算法) and mru(最近最常使用演算法)
所謂的lru(least recently used)演算法的基本概念是當記憶體的剩餘的可用空間不夠時,緩衝區盡可能的先保留使用者最常使用的資料,換句話說就是優先清除」較不常使用的資料」,並釋放其空間.之所以」較不常使用的資料」要用引號是因為這裡判斷所謂的較不常使用的標準是人為的、不嚴格的.所謂的mru(most recently used)演算法的意義正好和lru演算法相反.
下面我們通過oracle 9i cache中對lru和mru的使用來看一下兩者在緩衝區工作機制中的作用和區別
在oracle 9i中有lru list的概念我們可以把lru list想象成是一連串的緩衝區集合,兩端分別是lru端和mru端, 當資料庫從磁碟上讀取資料放入緩衝區時,系統必須先確定緩衝區中有free buffers,這個時候oracle 9i會掃瞄lru list,掃瞄的基本原則是 1.
從lru端到mru端; 2.
當掃瞄到free buffer或已掃瞄的緩衝區數目超過臨界值時,就會停止掃瞄動作;
如果在掃瞄過程順利的在lru list中找到了free buffer,那麼oracle 9i就把從磁碟讀出的資料寫到free buffer中然後把free buffer加到lru list的mru端.
那如果掃瞄過程沒有在lru list中找到free buffer怎麼辦?當然是從lru list的lru端開始清除緩衝區,如此一來就可以騰出新的空間了.
下圖就是乙個例子
使用者查詢資料a,初始的時候lru list中沒有資料a,於是oracle 9i到磁碟讀取a,然後放到lru list的mru端,使用者再從lru list中讀取資料a,同理對於b,c…當lru list滿了以後,如果使用者查詢n,此時n不在lru list中而且lru list中已經沒有free buffer了,此時oracle 9i就開始從lru端淘汰a以騰出空間存放n.
圖 1
我們再來看另外一種情況
在state 3之後,恰好使用者持續的查詢a—這將會導致a一直被放置在靠近mru端的緩衝區,結果將如圖state m』所示,你會發現圖2的state m』與圖1的state m緩衝區存放的資料完全一樣但是存放位置不一樣.此時lru list滿了,如果再放n的時候lru list`淘汰的是b,因為a的查詢率高於b,所以lru list讓a在緩衝區中呆上較長的時間而先淘汰掉」較不常用的」的b.
圖 2
資料庫訪問緩衝區的LRU與MRU演算法
資料庫訪問緩衝區的lru與mru演算法 1.cache hit and cache miss 當使用者第一次向資料庫發出查詢資料的請求的時候,資料庫會先在緩衝區中查詢該資料,如果要訪問的資料恰好已經在緩衝區中 我們稱之為cache hit 那麼就直接用緩衝區中讀取該資料.反之如果緩衝區中沒有使用者要...
訪問緩衝區的LRU與MRU演算法
資料庫 訪問緩衝區的 lru與 mru演算法 1.cachehitandcachemiss 當使用者第一次向資料庫發出查詢資料的請求的時候,資料庫會先在緩衝區中查詢該資料,如果要訪問的資料恰好已經在緩衝區中 我們稱之為cachehit 那麼就直接用緩衝區中讀取該資料.反之如果緩衝區中沒有使用者要查詢...
2 2 資料庫高速緩衝區
您所在的位置 讀書頻道 資料庫 oracle 2.2 資料庫高速緩衝區 2012 05 10 21 38 張天慧 清華大學出版社 字型大小 t t 綜合評級 oracle管理之道 第2章oracle例項,本章重點在於深入解析oracle本身執行時的記憶體空間,也就是oracle的例項主體,但誠如本章...