BUFFER CACHE尋找流程

gaopengtttt發表於2013-06-14
1、獲得保護hash bucket的CACHE BUFFERS CHAINS鎖存器,讀取需要SHARED模式,如果是修改則需要EXCLUSIVE模式,
如果發生爭用等待latch:cache buffers chains
2、檢視BUFFER HEADER,塊是否已經在BUFFER裡面,如果在對相應的緩衝區進行shared模式或者EXCLUSIVE模式的
buffer lock,如果發生BUFFER LOCK爭用則等待BUFFER BUSY WAITS,如果正在透過DBWR寫入到
緩衝區,則等待WRITE COMPLETE WAITS(邏輯讀)
3、如果不在BUFFER CACHE中,獲得CACHE BUFFER LRU chain後在LRU輔助列上檢索空閒區域,
如果輔助區沒有空閒區域,就在主佇列上按照COLD HOT的COLD端尋找,如果找到可以覆蓋的緩衝
區域,則對緩衝區叫EXCLUSIVE模式的BUFFER LOCK,並且將資料塊讀入到環境區,如果獲得BUFFER LOCK
的過程發生爭用則等待READ BY OYHER SESSION(物理讀)
4、如果還是沒有找到,伺服器程式請求DBWR將髒資料寫到資料檔案,確保空閒緩衝區,如果等待DBWR寫盤的時間就是FREE BUFFER WAITS。

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

相關文章