磁盤緩存專題之三:磁盤緩存的算法:寫算法


雖然緩存的最終目的為了提高性能,但緩存寫的技術與緩存讀的技術有很大的不同。但如果它帶來的數據丟失危險很大,那么,就是一個不可接受的方案。因此,安全地將數據保存在非易失存儲中是很重要的,因為這樣數據就可以長期地保存。雖然讀緩存技術用於讀操作時可以提高系統性能,但當用於新產生數據的寫操作時,卻產生了一些有趣的問題。

目前,用於緩存實現的大部分存儲器都是易失型存儲器,因此,當斷電的時候,所有緩存的數據都將丟失。為了避免這個問題,一種專為緩存而特別設計的存儲器已經面世,這種特制的存儲器內嵌后備電池,經常用於磁盤子系統,以保證在某一指定時間內供電和數據存儲。其他類型的非易失內存也已經生產出來,如閃存,但由於它們價格相對較高、性能較低及使用壽命有限等,通常不被用作緩存內存。

下面考慮使用L R U的示例,並假定某個應用正在更新數據。由於在緩存中可能存儲了過時數據。這里過時數據是指被存儲的數據,但不表示最新的版本。當應用修改數據時,過時的數據也必須要修改,無論它存放在哪里—在磁盤上,或者在磁盤和緩存內存里。圖顯示了兩種情況:第一種情況是數據僅存放在磁盤上;第二種情況是數據既存放在磁盤上,也存放在緩存內存中。


 


在緩存未命中情況下,緩存控制器決定是否緩存這些數據。對於這個例子,緩存控制器決定放棄緩存關於這個寫操作的數據,而把該數據直接寫入非易失存儲。換言之,數據僅寫入磁盤,繼續執行下一個操作。

在緩存命中情況下,緩存控制器可以修改緩存,甚至丟棄緩存,或使緩存內容無效,以致於后來的數據能夠覆蓋它。假如修改了緩存,必須最終在某個時刻將它寫入非易失磁盤存儲,但什么時候寫呢?可能數據在近期將不被修改,但也可能它成為一個熱點,將經歷接二連三地、快速的操作。數據寫入非易失存儲器速度相對較慢,因為必須等待磁盤設備寫完成后,才能進行新的寫操作,致使系統的性能降低。另一方面,假如數據首先被寫進緩存,延遲一段時間后才被寫到非易失存儲,那么,電源的臨時故障就有可能導致數據的丟失。

解決這個問題基本上采用兩種寫緩存技術:
透寫緩存
回寫緩存


1) 透寫緩存

透寫緩存是把數據寫入緩存內存后,就立即寫入非易失存儲器。透寫緩存的辦法是一種最保守的實現方案,因為基本上它不相信緩存能完成后來的寫操作。要是某種原因使緩存系統停止運行,而文件系統或數據庫系統卻發出寫請求,雖然不能獲得透寫緩存的響應,但它們可以訪問磁盤上的數據,重新開始正常的操作。透寫緩存既可以把數據鏡像到這個緩存,也可以不這樣做。假如所寫的數據是從緩存裝入的數據的更新版本,那么,透寫緩存將更新緩存中的信息,或者刪除緩存中的數據。

寫緩存的一個重要的特性是:它們必須修改所有存在的數據實例,或者保證丟棄所有原數據的拷貝。假如系統中存在多個版本的數據,就有可能產生錯誤,最終錯誤地將數據存放在非易失存儲器中。圖顯示了透寫緩存的例子,例子中的透寫緩存在更新緩存的同時,將數據寫入非易失存儲中。


 


2) 回寫緩存
回寫緩存有時也稱為后寫緩存,是為了性能緣故而實現的優化。它的基本思路是:為了給應用提供更快的響應,后寫緩存首先將幾個I / O寫操作集中起來,然后一次性地把它們寫入非易失存儲器,而不是產生一個寫請求就執行一個寫操作。


這種寫操作組合方法使緩存兩側的成分都能獲益。對於產生寫操作的主機來說,它比從透寫緩存中更快地接收到確認;對設備而言,與單獨地執行每個操作相比較,統一的寫操作所花費的總時間更少。因此,組合的結果是產生更快的操作。圖是一個回寫緩存過程,在數據傳輸到非易失存儲器之前,回寫緩存組合了幾個I / O操作。


 


數據庫系統的I / O操作是非常頻繁的,一般情況下,每秒要執行幾千個I / O操作。因此,回寫緩存能夠提供非常大的性能改善。不僅更快捷地接收到每一個I / O的確認,而且,由於每次的更新數據只對緩存操作即可,而不必對非易失存儲實施寫,因而,寫操作的執行速度也快了許多。

這樣,同樣數據塊的多次修改只需一次磁盤寫操作。清空緩存的過程通常稱為刷新緩存。如前所述,回寫緩存的潛在問題就是數據丟失。例如,倘若出現某種災難時,數據卻沒有刷新到磁盤,而仍然保持在緩存中,那么,數據就要丟失。由於回寫緩存算法對上述提及的數據丟失沒有采取任何補救措施,因而必須依賴於其他的方法幫助維護數據的一致性。這些方法通常都使用輔助后備電池,保證在災難出現時,緩存和子系統仍能運行足夠長的時間,使緩存得以刷新緩存到非易失存儲。

 

相關文檔下載:

磁盤緩存專題之一:緩存命中和緩存未命中&緩存與緩沖間的差異.rar

磁盤緩存專題之二:磁盤緩存的算法:讀算法.rar

磁盤緩存專題之三:磁盤緩存的算法:寫算法.rar


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM