Objecten worden automatisch in de cache opgeslagen in de Exadata Smart Flash Cache (ESFC), maar de DBA kan afdwingen dat een object in de flashcache wordt bewaard. De CELL_FLASH_CACHE opslagclausule-attribuut regelt de prioriteitstelling van blokken binnen de ESFC en ook de behandeling van Smart Scan-blokken. Er zijn drie mogelijke instellingen
- STANDAARD:Het automatische cachemechanisme is actief. Dit is de standaardwaarde.
- GEEN:dit object nooit in de cache plaatsen.
- KEEP:Het object moet een voorkeursstatus krijgen.
Merk op dat deze aanduiding ook het standaardgedrag van Smart Scans verandert, waardoor ze zowel van de cache als van de schijf kunnen lezen.
Hier is een voorbeeld van het wijzigen van de opslagclausule CELL_FLASH_CACHE met de opdracht "ALTER TABLE":
Een tafel vastzetten in ESFC:
SQL> ALTER TABLE llamadas STORAGE (CELL_FLASH_CACHE KEEP); Table altered.
Dit opslagkenmerk kan ook worden opgegeven wanneer de tabel wordt gemaakt:
SQL> create table region 2 ( 3 name varchar2(30 byte) not null enable, 4 num number not null enable, 5 buddy_region number default null, 6 change_state char(1 byte) default null, 7 weights varchar2(500 byte) default null, 8 primary key (name) 9 using index pctfree 10 initrans 2 maxtrans 255 compute statistics 10 tablespace tbs_idx enable 11 ) 12 (cell_flash_cache keep) 13 tablespace tbs_data; Table created.
De opslagclausule CELL_FLASH_CACHE instellen om BEHOUD , zal smart scan proberen de gegevens rechtstreeks uit het geheugen te lezen. Deze situatie kan worden geanalyseerd door de "cell flash cache read hits . aan te vinken “:
SQL> select * from llamadas; SQL> select name, value from v$sysstat where name in ('physical read total IO requests','cell flash cache read hits'); NAME VALUE ------ ------------ physical read total IO requests 1274902412 cell flash cache read hits 984578330
Scanbewerkingen op een grote tafel worden niet beïnvloed door de Flash Cache tenzij de tabel is gekoppeld aan de CELL_FLASH_CACHE KEEP-clausule zoals weergegeven in figuur 1.
Afbeelding 1:Resultaat van CELL_FLASH_CACHE-opslaginstelling op ESFC>
Een tafel in ESFC losmaken:
SQL> ALTER TABLE llamadas STORAGE (CELL_FLASH_CACHE DEFAULT);
Kan de huidige instellingen voor de CELL_FLASH_CACHE-clausule onderzoeken door DBA_SEGMENTS, DBA_TABLES of DBA_INDEXES op te vragen:
SQL> SELECT segment_name,segment_type,cell_flash_cache FROM dba_segments where segment_name = 'LLAMADAS'; SEGMENT_NAME SEGMENT_TYPE CELL_FLASH_CACHE ------------- ------------- --------------- LLAMADAS TABLE KEEP