Objekter cachelagres automatisk i Exadata Smart Flash Cache (ESFC), men DBA'en kan gennemtvinge, at et objekt opbevares i flash-cache. CELL_FLASH_CACHE lagerklausul-attribut styrer prioritering af blokke inden for ESFC og også behandlingen af Smart Scan-blokke. Der er tre mulige indstillinger
- STANDARD:Den automatiske cache-mekanisme er aktiveret. Dette er standardværdien.
- INGEN:Gem aldrig dette objekt i cache.
- BEHOLD:Objektet skal have fortrinsstatus.
Bemærk, at denne betegnelse også ændrer standardadfærden for Smart Scans, så de kan læse fra både cachen og disken.
Her er et eksempel på ændring af CELL_FLASH_CACHE-lagringsklausulen ved hjælp af kommandoen "ALTER TABLE":
Sådan fastgør du en tabel i ESFC:
SQL> ALTER TABLE llamadas STORAGE (CELL_FLASH_CACHE KEEP); Table altered.
Denne lagerattribut kan også angives, når tabellen oprettes:
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.
Indstilling af lagringsklausulen CELL_FLASH_CACHE at BEHOLDE , vil smart scanning forsøge at læse dataene direkte fra hukommelsen. Denne situation kan analyseres ved at kontrollere "celle flash cache læse hits “:
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
Scanningsoperationer på et stort bord er upåvirket af Flash-cachen medmindre tabellen er forbundet med CELL_FLASH_CACHE KEEP-sætningen som vist i figur 1.
Sådan frigøres en tabel i ESFC:
SQL> ALTER TABLE llamadas STORAGE (CELL_FLASH_CACHE DEFAULT);
Kan undersøge de aktuelle indstillinger for CELL_FLASH_CACHE-udtrykket ved at forespørge DBA_SEGMENTS, DBA_TABLES eller DBA_INDEXES:
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