(轉)使用Oracle 11GR2 資料庫Flash Cache
使用Oracle 11GR2 資料庫Flash Cache
Oracle最近釋出了一個補丁程式,使得你可以在Oracle Enterprise Linux中使用資料庫Flash Cache,即使你並沒有使用Exadata儲存.這個補丁的名字有點隱晦:
- 8974084:META. BUG FOR FLASH CACHE 11.2PL BUGS TO BACKPORT TO 11.2.0.1 OEL
只要安裝好這個補丁,你就可以使用任何已存在的flash 裝置作為資料庫的Flash Cache.下面是我在一個非常舊的伺服器與一個非常便宜的usb flash裝置上做的初步嘗試.相對於更優質的硬體來講, 測試結果並不具有代表性,但是我認為,它仍然是很有趣的.
安裝與配置
如果你也像我一樣想在一個USB flash裝置上做試驗,那麼也必須先掛載這個裝置.在我的機器上,我建立了一個目錄”/mnt/usbflash”,接著在/etc/fstab檔案新增了一個如下的條目:
/dev/sda1 /mnt/usbflash vfat noauto,users,rw,umask=0 0 0
在你的系統中,你可能需要將”/dev/sda1″改成其他的裝置,這依賴於你如何配置磁碟.然後就可以透過輸入”mount /dev/sda1″來掛載這個快閃記憶體盤(flash drive).
一旦掛載完畢,就可以透過設定系統引數db_flash_cache_files與db_flash_cache_size來配置flash cache了. 如下是我的相關設定:
注意, 引數DB_FLASH_CACHE_FILE的值必須是一個儲存在快閃記憶體盤上的檔案,而不是這個快閃記憶體盤的掛載點本身.
一旦這些引數設定完畢,flash cache就會被啟用,並且將充當buffer cache的二級快取. 當從主快取移出一個block的時候,它將被移到flash cache中,從而在再次讀回這個block的時候不需要產生一次訪問磁碟的物理讀.
監控
有多種方法來檢查是否使用到了flash cache. 首先,v$sysstat檢視包含多個新的統計項來展示有多少資料塊被新增到flash cache中,以及在flash cache中命中的次數(從這兒下載指令碼):
還有一些新的等待事件來顯示往flash cache中新增條目以及從flash cache中讀取條目引起的等待. 從下圖可以看到,’db flash’等待的次數超過’ db file sequential read’的等待次數,雖然從flash cache讀取的速度遠遠快於從磁碟的讀取速度(但是從flash cache讀取的次數也遠遠超過從磁碟讀取的次數):
那麼,請記住,我不能不為這個測試選擇了最糟糕的硬體-一個老舊的倆CPU intel主機以及一個便宜的拇指磁碟.即使這樣,還是發現了引人注目的問題-相對於整個處理時間來講寫開銷非常嚴重.雖然相對於db file sequential reads來講從flash cache中讀取的速度可以節約很多時間,維護flash cache的開銷也可能會非常高,因為大部分基於快閃記憶體的SSD(Solid State Disk)都有相對嚴重的寫瓶頸.
所有基於快閃記憶體的固態盤(SSD,Solid State Disk)都有寫效能方面的問題.然而,便宜的MLC(Multi Level Cell)快閃記憶體的寫速度差不多相當於更加昂貴的SLC(Single Level Cell)的1/3.在快閃記憶體盤比較新時,空閒空間可以以單頁(一般為4k)遞增的方式來寫.然而,當快閃記憶體盤越來越舊時,寫操作需要先清除一個完整的128頁的塊,從而就會慢很多了.我的便宜的USB盤是一箇舊盤,並且是MLC的,所以它的寫效能是非常差的.但是,即使是最好的基於快閃記憶體的SSD,它的寫速度也比讀速度要慢很多,因此,有些時候使用快閃記憶體盤反而會導致資料庫執行的更慢. 因此監控就顯得非常重要了.
下面是幾個與此相關的其他v$systat統計項:
可以透過檢視V$BH檢視來檢視cache中的內容. 儲存在flash cache中的buffer有諸如’flashcur’一類的狀態,使得我們可以統計每個物件有多少buffer在主快取中,有多少buffer在flash cache中(指令碼來自這裡):
在這個例子中,TXN_DATA表有85,833個塊在flash cache中,有28,753個塊在主buffer cache中.
結論
能讓flash cache工作,我非常高興,特別是在如此蹩腳的硬體上. 很高興Oracle對Non-Exadata硬體開放這項技術.
我將很快在搭建一套更好的環境,從而我可以理解它在相當好的商業SSD快閃記憶體盤上是如何工作的.
我堅信, 市場需要的理想的儲存體系應該包含至少兩層—一層來解決海量儲存,另一層解決快速檢索. 但是,我們也應該保持謹慎,因為flash的寫弊端可能導致我們在RAID5上遇到的類似的效能問題.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29119536/viewspace-1486472/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- (轉)資料庫Flash Cache(II)資料庫
- (轉)快閃記憶體表空間 VS 資料庫Flash Cache記憶體資料庫
- Oracle 11gR2 使用RMAN Duplicate複製資料庫Oracle資料庫
- FLASH CACHE IN ORACLE 11GOracle
- 11gR2新特性之二 - Flash Cache 的SSD支援
- Oracle資料庫遊標使用大全(轉)Oracle資料庫
- Oracle 11gR2 使用 RMAN duplicate from active database 複製資料庫OracleDatabase資料庫
- 在ASP中使用Oracle資料庫(2)(轉)Oracle資料庫
- ORACLE 11gR2 單例項資料庫自啟Oracle單例資料庫
- oracle 11gR2 改資料庫為歸檔模式Oracle資料庫模式
- Oracle 11gR2 Result Cache特性文章收集Oracle
- Oracle 11gR2 fast recovery area = flash recovery areaOracleAST
- Oracle使用hanganalyze 命令分析資料庫hang【轉】Oracle資料庫
- 【Oracle】使用hanganalyze 命令分析資料庫hang【轉】Oracle資料庫
- ORACLE資料庫物件與使用者管理(轉)Oracle資料庫物件
- Oracle資料庫資料物件分析(轉)Oracle資料庫物件
- oracle 11gr2 活動資料庫複製(active database duplication)Oracle資料庫Database
- Laravel 使用 Oracle 資料庫LaravelOracle資料庫
- cache資料庫入門教程資料庫
- 處理Oracle 11gR2 RAC資料庫資源不能自動啟動的問題 (轉)Oracle資料庫
- 轉載oracle資料庫鎖Oracle資料庫
- Oracle資料庫碎片整理(轉)Oracle資料庫
- oracle資料庫巡檢(轉)Oracle資料庫
- 手工建立oracle資料庫(轉)Oracle資料庫
- ORACLE資料庫簡介(轉)Oracle資料庫
- 取得oracle資料庫資訊(轉)Oracle資料庫
- PHP Oracle 資料庫函式庫(轉)PHPOracle資料庫函式
- Oracle資料庫索引使用及索引失效總結 轉Oracle資料庫索引
- Oracle資料庫系統使用經驗六則(轉)Oracle資料庫
- Aix下使用rman備份Oracle RAC資料庫(轉)AIOracle資料庫
- Oracle使用者——我渴望開源資料庫(轉)Oracle資料庫
- 使用 Flash Table 回滾資料
- oracle cache table(轉)Oracle
- 【配置上線】靜默安裝資料庫Oracle 11gR2資料庫Oracle
- oracle 11gR2 資料庫功能選件安裝情況Oracle資料庫
- Oracle 11gR2資料庫軟體不包含localconfigOracle資料庫
- relink 11gR2 資料庫資料庫
- Oracle資料庫升級(轉發)Oracle資料庫