雖然對緩存不應抱有那么高的期望,但如果很好地配置緩存,進程運行速度達到原來的兩倍並不是不可能的。
磁盤緩存建立在幾種不同的算法上,這些算法取決於I / O操作是讀還是寫。緩存的實現不像在氣體容器中倒入一瓶辛烷助推器,而獲得輔助加速。事實上,磁盤緩存並不是使設備的運行速度更快,而是盡量縮短I / O路徑的距離,盡可能地用內存的性能代替設備的性能。
為了獲得最好的結果,需要設計如何存放數據的 緩存算法 ,該算法應該與應用的訪問模式相匹配,匹配得越好,效率也就越高。更為重要的是,在斷電的情況下,緩存算法甚至能確定易失內存中的數據是否有永久丟失的危險。
下面包括了簡單的緩存算法的描述。這些描述並不基於任何特定產品的緩存設計,其主要目的是幫助讀者理解緩存的基本功能。掌握了這些知識以后,讀者將能更有效地計划、實現和管理磁盤緩存。
1. 讀算法
像前面所討論的,緩存可能改善系統的性能。其基本思想是:按照應用的類型,可以使用不同的智能方法對系統最近需要的數據做出預言。目前普遍采用的算法有兩種,即:
• 最近最少使用(LRU)緩存。
• 預先讀緩存。
1) LRU緩存
LRU的基本思想是:最近讀出過的數據不久將被再次被讀出。在數據庫上,應用產生的數據訪問模式有時被稱為熱區。熱區是指設備或子系統上的一組存儲區域,這些設備或子系統承擔着大量的操作。假如熱區不是放在磁盤設備,而是放在緩存中,那么,對它的訪問速度將要快得多。圖描述了熱區的概念。
在正常的I / O操作期間,一旦L R U被請求,它就將數據裝入緩存。術語“ L R U”起源於虛擬內存技術,描述將不經常使用的數據和代碼遷移到虛擬存儲的方法,即將丟棄最近最少使用的緩存數據。換言之,LRU得名是因為丟棄數據的方式,而不是裝入或保存數據的方式。從某種意義上說,將這類緩存命名為最近最多使用緩存更有道理,因為算法真正地描述了緩存所能提供的性能優勢。圖顯示了在緩存中裝入數據的過程。
2) LRU緩存的應用
在應用連續地訪問和修改同樣數據的情況下, L R U緩存能夠帶來最大的利益。事務處理系統就是這種應用的一個例子。L U R緩存可以為許多E R P(企業資源規划)應用和工具提供性能優勢。同時, L R U還能夠為使操作處理頻繁和多用戶關系數據庫應用提供性能優勢。圖表示使用L R U緩存的通用的、多用戶關系數據庫系統。
除了以上的例子以外,下面一組應用也可以從L R U磁盤緩存中獲得性能優勢:
• 事務處理系統。
• ERP 和M R P系統。
• Internet電子商務服務器。
• 顧客服務和支持系統。
• 其他多用戶數據庫應用。
但是,對於順序訪問數據的數據庫系統, L R U緩存技術不能很好地工作。這方面的例子包括數據倉庫和多媒體數據庫服務器。這些應用最好使用另外一種技術,即預先讀緩存,下面將要討論這種技術。
3) 預先讀緩存
預先讀緩存的基本思想是:已經讀入的數據將不再需要,而依次需要的是即將讀入的幾個數據塊。換言之,預先讀緩存根據過去從磁盤讀入數據的情況,推測下一步將需要的數據。預先讀的關鍵概念是預取。預取是在數據被請求之前就將它從非易失存儲中讀出,並把它放在易失的緩存內存中。然而, L R U僅緩存已經被請求的或寫的數據,由此可以看出,預先讀緩存與L R U緩存之間存在很大的差別。圖顯示了預先讀的過程。
如果數據已經老化,或在近期內沒有別的用處,它就從預先讀緩存中丟棄。雖然這樣做乍看起來似乎有點奇怪,卻經常很好地用於預先讀的應用。預先讀緩存的目的是把大量的數據移到更靠近C P U的地方,並在此一並處理這些數據。這些類型的應用將數據總量作為一個整體處理,因而,在處理過程中不必改變個別數據塊,也就沒有必要在緩存中保留讀數據塊。
預先讀的實現初看起來似乎很平常,但事實上,並不像想像的那樣簡單,它面臨着幾個困難的挑戰。緩存總是與塊數據傳輸打交道,對於磁盤文件或數據庫系統組織是不可見的。由於文件被散布在整個磁盤各個地方,而預先讀緩存卻總是讀出連續的數據塊,所以經常錯誤地讀出一些不需要的數據。
綜上所述,為了預先讀緩存工作得更好,可以使用某些進程移動或重新分布磁盤數據,當然這種做法也可能產生問題。磁盤整理程序就是這樣的例子,因為它總是力圖把數據存放在一些更少、更連續的大塊區域中,所以它能夠提高預先讀緩存性能。此外,對於存儲子系統,重新配置更大的存儲塊也是有益的。
重新組織目錄結構通常會增加該卷中的磁盤碎片數量,這是由於將一些目錄結構拷貝到同一存儲卷中的新位置的結果。同時,建立和刪除大量文件也會給所在卷增添磁盤碎片。卷中的碎片越多,讀緩存的性能就越差。
4) 預先讀緩存的應用
預先讀緩存大多用於順序I / O模式的應用,如文件服務、備份及數據倉庫等。對於像圖形處理這樣的應用,預讀緩存可以提供非常有益的性能優勢。一般地說,哪里存在順序訪問的大文件,哪里就需要預讀緩存技術。以下是一些可能受益於預讀緩存的應用:
• 文件服務。
• 多媒體;音頻和視頻。
• 圖形學。
• 數據倉庫。
• 順序文件的匹配處理。
圖是一個用於文件服務器的預讀緩存

之前在社區發布了一系列的文章,后來因為圖片問題,很多的文章無法看了,朋友都反應了這個問題,現在發布出來,持續的更新,請大家頂起來 :http://www.itpub.net/thread-1703788-1-1.html