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
- Cache 和 Buffer 的區別在哪裡?
- Linux Buffer/Cache 的區別Linux
- buffer與cache的區別
- IO之核心buffer----"buffer cache"
- Oracle Cache Buffer ChainsOracleAI
- Buffer Cache以及buffer busy waits/gc相關事件AIGC事件
- 【BUFFER】Oracle buffer cache之 latch 學習記錄Oracle
- 計算機buffer和cache的區別?linux運維學習知識計算機Linux運維
- 為什麼node.js要引入buffer?淺析緩衝區bufferNode.js
- 33、buffer_cache_3(redo的產生、LRBA、buffer cache裡的等待事件)事件
- Linux工具效能調優系列二:buffer和cacheLinux
- Linux如何手動釋放Swap、Buffer和CacheLinux
- 清理buffer/cache/swap的方法梳理
- PostgreSQL DBA(89) - Linux(Buffer vs Cache)SQLLinux
- Linux記憶體、Swap、Cache、BufferLinux記憶體
- 【Cache】將常用的“小表”快取到Buffer Cache快取
- 手動釋放Linux上的Swap、Buffer和CacheLinux
- Buffer和Channel
- buffer cache深度分析及效能調整(五)
- buffer cache深度分析及效能調整(四)
- buffer cache深度分析及效能調整(六)
- html和html5有什麼區別呢?HTML
- 調整緩衝區快取記憶體(Buffer Cache)的效能(轉)快取記憶體
- 5G和5 GHz Wi-Fi有什麼區別?
- Node.js 中的緩衝區(Buffer)究竟是什麼?Node.js
- 【ASK_ORACLE】Library cache pin 與 library load lock的關係和區別Oracle
- [20231023]備庫與alter system flush buffer_cache.txt
- Java IO學習筆記一:為什麼帶Buffer的比不帶Buffer的快Java筆記
- shim和polyfill有什麼區別
- vue和react有什麼區別?VueReact
- modbus和tcp有什麼區別?TCP
- Jsp和Servlet有什麼區別?JSServlet
- SpringBoot和Spring有什麼區別?Spring Boot
- RPA和IPA有什麼區別
- int 和 Integer 有什麼區別
- rancher 和 Kubernetes有什麼區別?
- QPS和TPS有什麼區別?