• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      Exadata數(shù)據庫一體機FlashCache緩存淘汰算法改進

      2020-11-11 06:28:38亓薇薇
      科技視界 2020年31期
      關鍵詞:存儲管理數(shù)據文件對象

      亓薇薇

      (山東省萊蕪職業(yè)技術學院<信息工程系>,山東 萊蕪271100)

      0 引言

      最近幾十年,我國IT及互聯(lián)網產業(yè)發(fā)展迅速,信息量也以幾何級倍數(shù)增長,這對存儲系統(tǒng)的要求也不斷提高,存儲系統(tǒng)的性能、容量、與成本之間的矛盾也日益突出。

      機械硬盤存儲容量大且技術成熟,但是它的IO性能相對比較低下,無法滿足那種對IO要求極高的業(yè)務系統(tǒng)。SSD固態(tài)硬盤[1]或者PCI-E閃存[2]這類IO設備能夠提供極高的IO性能,但價格同樣也非常高。如何利用這兩種存儲設備的優(yōu)點并避開各自的缺點,發(fā)揮出存儲設備的最大的優(yōu)勢是值得探討的問題。

      分層存儲[3]作為一種能夠有效解決上述矛盾的技術,在近年來成為熱點。所謂分層存儲,就是所有數(shù)據最終存儲在機械硬盤中,但在進行IO訪問時,通過分層存儲管理軟件自動實現(xiàn)熱點數(shù)據自動存儲在高性能的IO設備中,這樣就能夠充分利用SSD或者PCIE閃存這類容量小但IO性能極高的IO設備。分層存儲管理軟件目前有開源和閉源兩種:開源的存儲管理軟件,例如:Facebook公司的FlashCache,Intel公司的Open-CAS;閉源的存儲管理軟件,例如:Oracle公司的Exadata FlashCache。

      以下內容主要涉及Oracle的Exadata FlashCache的緩存算法改進,Exadata是Oracle公司的最先進的數(shù)據庫一體機,底層的數(shù)據存儲使用機械硬盤,上層用PCI-E閃存卡做成數(shù)據緩存[4],也即FlashCache。

      1 Exadata FlashCache IO請求模式

      Exadata FlashCache有write-through和writeback兩種模式[5]可以選擇,write-through模式,意味著計算節(jié)點數(shù)據庫BufferCache中的臟數(shù)據塊寫回數(shù)據文件時,是繞開FlashCache,直接寫回機械硬盤。而對于write-back模式,數(shù)據庫BufferCache中的臟數(shù)據塊寫回數(shù)據文件時,是先寫FlashCache,后期再慢慢刷回機械硬盤。

      在講解Exadata FlashCache的緩存算法之前,先介紹Exadata FlashCache的IO請求模式,也即哪些IO請求會經過PCI-E閃存設備。

      當需要被訪問的數(shù)據塊沒有被緩存在FlashCache中的情況下,IO讀請求的整個處理流程如圖1所示。

      圖1 write-through模式FlashCache數(shù)據未緩存時IO請求

      數(shù)據庫服務器向存儲管理軟件發(fā)起IO讀請求,Exadata存儲管理軟件檢測到存儲節(jié)點的FlashCache中沒有所需要的數(shù)據塊,所以只能直接從磁盤的數(shù)據文件中訪問這些IO數(shù)據塊。從磁盤的數(shù)據文件中讀取出的數(shù)據塊被返回給數(shù)據庫服務器。存儲管理軟件會決斷這些被訪問的數(shù)據塊是否滿足緩存到FlashCache的條件,如果滿足(數(shù)據緩存算法),則這些數(shù)據塊會被寫入FlashCache中。

      當需要被訪問的數(shù)據塊已經被緩存在FlashCache中的情況下,IO讀請求的整個處理流程如圖2所示。

      數(shù)據庫服務器向存儲管理軟件發(fā)起IO請求。存儲管理軟件檢測到存儲節(jié)點的FlashCache中有所需要的數(shù)據塊,所以可以直接從FlashCache中訪問這些IO數(shù)據塊。將從FlashCache中讀取出的數(shù)據塊被返回給數(shù)據庫服務器。

      數(shù)據庫服務器向存儲節(jié)點發(fā)起IO寫請求,整個處理流程如圖3所示。

      數(shù)據庫服務器向存儲管理軟件發(fā)起IO寫請求。存儲管理軟件將這些IO寫請求直接寫回磁盤上的數(shù)據文件中。數(shù)據庫服務器BufferCache中的臟數(shù)據塊完全寫入存儲節(jié)點磁盤的數(shù)據文件后,給數(shù)據庫服務器發(fā)出一個IO寫完成的響應,通過數(shù)據庫服務器已經完成IO寫入。存儲管理軟件會決斷這些被寫回數(shù)據文件的數(shù)據塊是否滿足緩存到FlashCache的條件,如果滿足,則這些數(shù)據塊會被緩存到FlashCache中。

      圖2 write-through模式FlashCache數(shù)據已緩存時IO請求

      圖3 write-through模式FlashCache寫數(shù)據時IO請求

      如果FlashCache在write-back模式下,它的IO讀操作與write-through模式完全相同,但它的IO寫操作與write-through模式則完全不同。

      下面介紹FlashCache配置為write-back模式時,IO寫操作的請求順序如圖4所示。

      數(shù)據庫服務器向存儲管理軟件發(fā)起IO寫請求。存儲管理軟件將這些IO寫請求直接寫入FlashCache中,而不是數(shù)據文件。當數(shù)據庫服務器的IO寫請求完全寫入FlashCache后,給數(shù)據庫服務器一個IO寫結束的響應。存儲管理軟件后期會將FlashCache中的臟數(shù)據塊慢慢地刷回數(shù)據文件中。

      圖4 write-back模式FlashCache寫數(shù)據時IO請求

      2 Exadata FlashCache緩存淘汰算法

      Exadata Smart FlashCache IO請求模式中可以看出:不同緩存配置模式,不同的IO請求模式,所涉及的數(shù)據塊是否會進行緩存都不盡相同。

      訪問的數(shù)據塊適不適合進行緩存,是由數(shù)據庫服務器向存儲軟件發(fā)送的數(shù)據元信息決定的,這些數(shù)據元信息類似于:請求的IO的大小或IO類型、請求的IO所屬的數(shù)據段關于cell_flash_cache屬性的設置等。

      FlashCache中數(shù)據塊的管理工作是由Exadata存儲管理軟件來完成的,F(xiàn)lashCache中數(shù)據塊的刷出和刷入機制使用的是最近最少使用(LRU)的算法進行自動管理。

      由PCI-E閃存組成的FlashCache緩存畢竟容量有限,當FlashCache用滿時,Exadata將FlashCache中最近很少使用的數(shù)據塊刷出FlashCache。

      FlashCache緩存淘汰算法具體如下:

      (1)當有新的數(shù)據對象需要緩存到FlashCache時,先檢查存儲節(jié)點的FlashCache是否還有可用空間?

      (2)如果存儲節(jié)點的FlashCache已經完全使用,沒有發(fā)現(xiàn)可用空間時,則檢查FlashCache中的哪個數(shù)據對象的hitcount最少?

      (3)將FlashCache中hitcount最少的數(shù)據對象刷出,并釋放空間。

      (4)將新的數(shù)據對象需要緩存到FlashCache。

      3 當前緩存淘汰算法缺陷

      Exadata的FlashCache使用LRU算法將數(shù)據塊淘汰出緩存,但這種緩存淘汰算法存在一些缺陷。通過下面這則案例解析,可以清楚看出當前緩存淘汰算法的缺陷在哪。

      案例概要:

      一臺Exadata上運行著A和B兩套Oracle數(shù)據庫,運行了一段時間后,A數(shù)據庫從該Exadata上遷移出去并且完全停止使用,但是A數(shù)據庫沒有刪除。某一天,發(fā)現(xiàn)運行的B數(shù)據庫性能比較差,主要表現(xiàn)在單個IO讀經常飆升到十幾毫秒左右,同時B數(shù)據庫的FlashCache的命中率比較低。

      案例分析:

      檢查FlashCache的使用情況。由于Exadata每個存儲節(jié)點都配置了5.8TB的PCI-E閃存卡,正常情況下,熱點數(shù)據都應該緩存在這些基于PCI-E閃存卡的FlashCache中,如果SQL語句需要的數(shù)據塊未緩存到FlashCache中,則需要讀取物理的數(shù)據文件,如果大量訪問物理的數(shù)據文件,則IO性能肯定會大幅下降。

      下面,進一步檢查存儲節(jié)點FlashCache的使用情況。

      從以上輸出可以看出,A數(shù)據庫還占用了4個多TB的FlashCache,而B數(shù)據庫僅僅占用了1個多TB的FlashCache資源,這其實就是為什么B數(shù)據庫單個IO讀慢的原因。

      跟客戶進一步溝通得知,A數(shù)據庫已經從Exadata上遷移出去將近2個月了,目前A數(shù)據庫處于關閉狀態(tài)。那么問題來了,既然A數(shù)據庫已經處于關閉狀態(tài),并且永遠也不會開啟,那么為什么A數(shù)據庫還有這么多的數(shù)據對象緩存在FlashCache中呢?并且也沒有立即釋放的跡象。

      通過這個案例,可以看出FlashCache緩存淘汰算法存在的一些缺陷。存在的缺陷主要在于第2步,因為它只是簡單地比較FlashCache中的哪個數(shù)據對象的hitcount最少,然后把hitcount最少的數(shù)據對象刷出FlashCache。

      該缺陷主要表現(xiàn)為:A數(shù)據庫已經關閉了2個多月,并且永遠也不會開啟,但A數(shù)據庫中有些數(shù)據對象的hitcount非常非常大,則這些對象有可能永遠緩存在FlashCache中。

      4 Exadata FlashCache緩存淘汰算法改進

      那么如何優(yōu)化Exadata FlashCache的淘汰算法呢?當數(shù)據對象被緩存到FlashCache之后,相應的信息都會被統(tǒng)計到flashcachecontent指標中,可以分析flashcachecontent指標,來確認FlashCache中緩存了哪些數(shù)據對象。

      查看flashcachecontent指標中包括哪些信息,具體命令如下。

      flashcachecontent指標中dbUniqueName屬性,是數(shù)據庫的唯一識別名,等同于數(shù)據庫名。objectNumber屬性,對應數(shù)據庫中dba_objects視圖的data_object_id字段,可以通過它查找出具體的數(shù)據對象名稱。

      有了數(shù)據庫名和數(shù)據對象ID這些信息,就可以與數(shù)據庫實例進行關聯(lián)查詢出這些數(shù)據對象的當前狀態(tài)。

      可以在緩存淘汰算法代碼中定期檢查FlashCache中所涉及的數(shù)據庫和數(shù)據對象的狀態(tài),如果發(fā)現(xiàn)FlashCache中某個數(shù)據庫已經長時間未運行,比如一個星期或半個月,則將FlashCache中該數(shù)據庫的所有對象的hitcount重置為0,同樣,如果發(fā)現(xiàn)FlashCache中某個對象(objectNumber)在對應的數(shù)據庫中沒有匹配的數(shù)據對象,則間接地說明了FlashCache中緩存的對象在數(shù)據庫層面已經被刪除,這類對象同樣可以將hitcount重置為0。如此一來,當需要從FlashCache中刷出數(shù)據,騰出空間給新的數(shù)據對象時,就可以優(yōu)先刷出那些被刪除的對象,或者是數(shù)據庫已經長期關閉的對象。而不是簡單地刷出hitcount最小的數(shù)據對象,因為誰也不能保證hitcount最小的數(shù)據對象在日后不會被再次訪問。

      5 結語

      前面介紹了針對Oracle公司的Exadata存儲管理軟件中對FlashCache緩存的管理,以及Exadata FlashCache緩存淘汰算法中目前存在的缺陷,給出該淘汰算法的改進建議,這個建議將有效改進FlashCache的空間使用效率,提升使用性能。

      猜你喜歡
      存儲管理數(shù)據文件對象
      神秘來電
      睿士(2023年2期)2023-03-02 02:01:09
      數(shù)據文件恢復專題問答
      攻略對象的心思好難猜
      意林(2018年3期)2018-03-02 15:17:24
      數(shù)據文件安全管控技術的研究與實現(xiàn)
      一種衛(wèi)星數(shù)據廣播系統(tǒng)端站存儲管理方案設計
      電子制作(2017年13期)2017-12-15 09:00:32
      SQL數(shù)據文件恢復工具
      文檔存儲管理系統(tǒng)的設計
      基于熵的快速掃描法的FNEA初始對象的生成方法
      區(qū)間對象族的可鎮(zhèn)定性分析
      省級氣象數(shù)據文件共享存儲管理系統(tǒng)研究
      定兴县| 宁河县| 郴州市| 巫溪县| 黔西县| 东光县| 石景山区| 高青县| 安乡县| 盈江县| 杂多县| 通许县| 文安县| 石楼县| 抚宁县| 灵丘县| 鄂伦春自治旗| 福建省| 京山县| 来凤县| 石城县| 衡水市| 郁南县| 天门市| 南京市| 巴林右旗| 鄂托克前旗| 墨江| 巴中市| 顺昌县| 天镇县| 漳平市| 揭西县| 肇东市| 金昌市| 泗水县| 石楼县| 永兴县| 梓潼县| 邢台县| 成武县|