Ask Hoegh(5)——buffer cache和buffer有什麼區別?
問:
答:首先我們對比一下db block buffer cache和redo buffer的概念和功能。
buffer cache,其中文名稱為緩衝器高速緩衝儲存器。按照oracle官方的說法,buffer cache就是一塊含有許多資料塊的記憶體區域,而這些資料塊主要都是資料檔案裡的資料塊內容的複製。
Oracle資料庫的SGA包含db block buffer cache和redo buffer等元件,那麼,同樣屬於記憶體,buffer cache和buffer有區別嗎?
答:首先我們對比一下db block buffer cache和redo buffer的概念和功能。
buffer cache,其中文名稱為緩衝器高速緩衝儲存器。按照oracle官方的說法,buffer cache就是一塊含有許多資料塊的記憶體區域,而這些資料塊主要都是資料檔案裡的資料塊內容的複製。
由於buffer cache位於物理檔案系統和塊裝置驅動程式之間,因此,當物理檔案系統需要從塊裝置上讀取資料時,它首先試圖從buffer cache中去讀。如果命中,則核心就不必在去訪問慢速的塊裝置。否則如果命中失敗,也即資料不在buffer cache中,則核心從塊裝置上讀取相應的資料塊,並將其在buffer cache中快取起來,以備下次訪問之用。
類似地,但物理檔案系統需要向塊裝置上寫資料時,也是先將資料寫到相應的緩衝區中,並將這個緩衝區標記為髒(dirty),然後在將來的某些時候將buffer cache中的資料真正地回寫到塊裝置上,或者將該緩衝區直接丟棄。從而實現減少磁碟寫操作的頻率。
redo buffer,又叫Redo Log Buffer,是SGA中一段儲存資料庫修改資訊的快取。這些資訊被儲存在重做條目(Redo Entry)中,重做條目中包含了由於INSERT、UPDATE、DELETE、CREATE、ALTER或DROP所做的修改操作而需要對資料庫重新組織或重做的必須資訊。在必要時,重做條目可用於資料庫恢復。重做條目是Oracle資料庫程式從使用者記憶體中複製到Redo Log Buffer中去的。重做條目在記憶體中是連續相連的。後臺程式LGWR負責將Redo Log Buffer中的資訊寫入到磁碟上活動的重做日誌檔案(Redo Log File)或檔案組中去的。引數LOG_BUFFER決定了Redo Log Buffer的大小。
接下來,我們在對比一下buffer和cache的概念。
類似地,但物理檔案系統需要向塊裝置上寫資料時,也是先將資料寫到相應的緩衝區中,並將這個緩衝區標記為髒(dirty),然後在將來的某些時候將buffer cache中的資料真正地回寫到塊裝置上,或者將該緩衝區直接丟棄。從而實現減少磁碟寫操作的頻率。
redo buffer,又叫Redo Log Buffer,是SGA中一段儲存資料庫修改資訊的快取。這些資訊被儲存在重做條目(Redo Entry)中,重做條目中包含了由於INSERT、UPDATE、DELETE、CREATE、ALTER或DROP所做的修改操作而需要對資料庫重新組織或重做的必須資訊。在必要時,重做條目可用於資料庫恢復。重做條目是Oracle資料庫程式從使用者記憶體中複製到Redo Log Buffer中去的。重做條目在記憶體中是連續相連的。後臺程式LGWR負責將Redo Log Buffer中的資訊寫入到磁碟上活動的重做日誌檔案(Redo Log File)或檔案組中去的。引數LOG_BUFFER決定了Redo Log Buffer的大小。
接下來,我們在對比一下buffer和cache的概念。
快取(cache)是把讀取過的資料儲存起來,重新讀取時若命中(找到需要的資料)就不要去讀硬碟了,若沒有命中就讀硬碟。其中的資料會根據讀取頻率進行組織,把最頻繁讀取的內容放在最容易找到的位置,把不再讀的內容不斷往後排,直至從中刪除。
緩衝(buffers)是根據磁碟的讀寫設計的,把分散的寫操作集中進行,減少磁碟碎片和硬碟的反覆尋道,從而提高系統效能。linux有一個守護程式定期清空緩衝內容(即寫如磁碟),也可以透過sync命令手動清空緩衝。
緩衝(buffers)是根據磁碟的讀寫設計的,把分散的寫操作集中進行,減少磁碟碎片和硬碟的反覆尋道,從而提高系統效能。linux有一個守護程式定期清空緩衝內容(即寫如磁碟),也可以透過sync命令手動清空緩衝。
兩者都是RAM中的資料。簡單來說,buffer是即將要被寫入磁碟的,而cache是被從磁碟中讀出來的。
從以上兩組概念對比,我們就不難理解buffer cache和buffer的區別了。
從以上兩組概念對比,我們就不難理解buffer cache和buffer的區別了。
~~~~~~~ the end~~~~~~~~~
hoegh2016.02.29
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29067253/viewspace-2142762/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Cache 和 Buffer 有什麼區別?
- Cache和Buffer都是快取,有什麼區別?Linux快取Linux
- Buffer和Cache的區別
- Cache 和 Buffer的區別
- Cache 和 Buffer 的區別在哪裡?
- buffer與cache的區別
- Buffer 與 Cache 的區別
- log_buffer和 Redo Buffers有什麼區別啊
- Linux Buffer/Cache 的區別Linux
- buffer 與cache 的區別2
- linux cache與buffer的區別Linux
- Linux free中buffer與cache區別Linux
- Ask Hoegh(4)——select count(*)和select count(1)、count(column)有區別嗎?
- IO之核心buffer----"buffer cache"
- 請問多執行緒程式設計高手semaphore和 buffer 有什麼區別執行緒程式設計
- ASM Buffer Cache是用來做什麼的!ASM
- Buffer Cache 原理
- cache buffer chainAI
- buffer cache實驗5-latch:cache buffers chainAI
- Linux記憶體管理機制中buffer和cache的區別Linux記憶體
- 轉貼_大牛_tolywang_Buffer 與 Cache 的區別
- Buffer Cache Size(資料緩衝區)
- cr塊和latch buffer cache chainAI
- Buffer Cache Hit Ratio
- Oracle Buffer Cache原理Oracle
- Oracle database buffer cacheOracleDatabase
- CACHE BUFFER CHAINSAI
- Database Buffer Cache (79)Database
- 為什麼node.js要引入buffer?淺析緩衝區bufferNode.js
- Linux作業系統中記憶體buffer和cache的區別Linux作業系統記憶體
- OCP知識點講解 之 什麼是Buffer Cache?
- 【BUFFER】Oracle buffer cache之 latch 學習記錄Oracle
- Oracle中flush buffer cache和x$bhOracle
- Oracle Cache Buffer ChainsOracleAI
- linux cache and buffer【轉】Linux
- Latch: cache buffer chains (%)AI
- BUFFER CACHE尋找流程
- buffer cache logical structure!Struct