您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關Ask Hoegh中buffer cache和buffer有什么區別,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
問:
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的概念。
緩存(cache)是把讀取過的數據保存起來,重新讀取時若命中(找到需要的數據)就不要去讀硬盤了,若沒有命中就讀硬盤。其中的數據會根據讀取頻率進行組織,把最頻繁讀取的內容放在最容易找到的位置,把不再讀的內容不斷往后排,直至從中刪除。
緩沖(buffers)是根據磁盤的讀寫設計的,把分散的寫操作集中進行,減少磁盤碎片和硬盤的反復尋道,從而提高系統性能。linux有一個守護進程定期清空緩沖內容(即寫如磁盤),也可以通過sync命令手動清空緩沖。
兩者都是RAM中的數據。簡單來說,buffer是即將要被寫入磁盤的,而cache是被從磁盤中讀出來的。
從以上兩組概念對比,我們就不難理解buffer cache和buffer的區別了。
上述就是小編為大家分享的Ask Hoegh中buffer cache和buffer有什么區別了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。