您好,登錄后才能下訂單哦!
在oracle11gR2中,Oracle提供了設(shè)置FLASH CACHE的功能,該特性允許使用SSD硬盤作為Buffer Cache的二級緩存,以在磁盤和內(nèi)存之間增加一級緩沖,提升數(shù)據(jù)訪問性能。這個功能其實是EXADATA引入,這也是EXADATA提高IO性能的又一利器。不過即使不是EXADATA,在11.2中也可以設(shè)置該功能,前提要求操作系統(tǒng)必須是oracle enterprise linux(簡稱OEL)或者solaris,也就是說只支持Oracle公司自己的操作系統(tǒng)。
Flash Cache 的功能只會提高磁盤讀的性能,因為Dirty blocks還是會直接寫到磁盤而不會在SSD中,通過下面的圖可以很好的理解它的工作原理
1. 首先當(dāng)有讀的請求發(fā)生時,磁盤數(shù)據(jù)會被讀到buffer
2. 有寫的工作完成時,會將Dirty blocks直接寫入磁盤
3. 將SGA中通過LRU移出的數(shù)據(jù)寫到flash cache中,下次有讀的請求時會通過flash cache寫入內(nèi)存
oracle 的smart flash cache功能 在OEL平臺上對DB軟件打了閃存補丁后可以使用(solaris上不需要打),具體說明如下:
OS |
Oracle |
補丁 |
是否正常 |
備注 |
OEL6.4 |
11.2.0.1 |
p8974084 |
是 |
|
11.2.0.3 |
p12949806 |
是 |
|
|
11.2.0.4 |
無 |
是 |
|
|
OEL7 |
11.2.0.1 |
p8974084 |
ORA-00439: feature not enabled: Server Flash Cache |
內(nèi)部bug,暫無補丁 |
11.2.0.3 |
p12949806 |
ORA-00439: feature not enabled: Server Flash Cache |
內(nèi)部bug,暫無補丁 |
|
11.2.0.4 |
無 |
ORA-00439: feature not enabled: Server Flash Cache |
內(nèi)部bug,暫無補丁 |
開啟Flash Cache功能需要修改兩個參數(shù)(db_flash_cache_file和db_flash_cache_size),而且需要重啟生效;支持的方式分為三種,包括文件系統(tǒng)、裸設(shè)備、ASM。
SQL> show parameter flash_cache
NAME TYPE VALUE
------------------- ----------- --------------------
db_flash_cache_file string
db_flash_cache_size big integer 0
db_flash_cache_file的大小一般推薦2-10倍的buffer cache(不能小于2倍),如果使用ASMM, 2-10倍的SGA_TARGET,這樣才能達到效果;若將db_flash_cache_size設(shè)為0 可以disable flash cache,再設(shè)回來可以enable. 但不允許動態(tài)修改db_flash_cache_size的值;對于RAC的環(huán)境, 需要在每個instance上面都設(shè)置以上兩個參數(shù),并且不能使用同一個file。
修改方法
1. 文件系統(tǒng)
SQL> alter system set db_flash_cache_file='/testfs/cache.dbf' scope=spfile;
SQL> alter system set db_flash_cache_size=8192M scope=spfile;
2. 裸設(shè)備
SQL> alter system set db_flash_cache_file='/dev/raw/raw1' scope=spfile;
SQL> alter system set db_flash_cache_size=8192M scope=spfile;
3.ASM
SQL> alter system set db_flash_cache_file='+ASM/DB/cache.dbf ' scope=spfile;
SQL> alter system set db_flash_cache_size=8192M scope=spfile;
通過以下SQL判斷flash cache是否在用
SELECT SUM (CASE WHEN b.status LIKE 'flash%' THEN 1 END) flash_blocks, SUM (CASE WHEN b.status LIKE 'flash%' THEN 0 else 1 END) cache_blocks,count(*) total_blocks FROM v$bh b;
select name,value from v$sysstat where name in ('physical read flash cache hits','physical reads','consistent gets','db block gets','flash cache insert');
Oracle smart flash cache 功能雖然能很大的提高效率,但目前flash cache功能的成熟度不夠理想,目前在配置時遇到很多bug(本文只列出一部分),后期使用是否還有bug還是未知,但是SSD硬盤確實對磁盤的I/O有很大性能的提高。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。