Objekte werden automatisch im Exadata Smart Flash Cache (ESFC) zwischengespeichert, der DBA kann jedoch erzwingen, dass ein Objekt im Flash-Cache gehalten wird. Der CELL_FLASH_CACHE Das Speicherklauselattribut steuert die Priorisierung von Blöcken innerhalb des ESFC und auch die Behandlung von Smart-Scan-Blöcken. Es gibt drei mögliche Einstellungen
- STANDARD:Der automatische Caching-Mechanismus ist aktiv. Dies ist der Standardwert.
- NONE:Dieses Objekt niemals zwischenspeichern.
- BEHALTEN:Das Objekt soll bevorzugt behandelt werden.
Beachten Sie, dass diese Bezeichnung auch das Standardverhalten von Smart Scans ändert, sodass sie sowohl aus dem Cache als auch aus dem Datenträger lesen können.
Hier ist ein Beispiel für die Änderung der Speicherklausel CELL_FLASH_CACHE mit dem Befehl „ALTER TABLE“:
So fixieren Sie eine Tabelle in ESFC:
SQL> ALTER TABLE llamadas STORAGE (CELL_FLASH_CACHE KEEP); Table altered.
Dieses Speicherattribut kann auch beim Erstellen der Tabelle angegeben werden:
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.
Setzen der Speicherklausel CELL_FLASH_CACHE BEHALTEN , versucht Smart Scan, die Daten direkt aus dem Speicher zu lesen. Diese Situation kann analysiert werden, indem die „Zellen-Flash-Cache-Lesetreffer überprüft werden “:
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
Scan-Vorgänge auf einer großen Tabelle werden vom Flash-Cache nicht beeinflusst es sei denn, die Tabelle ist mit der CELL_FLASH_CACHE KEEP-Klausel verknüpft, wie in Abbildung 1 gezeigt.
Abbildung 1:Ergebnis der Speichereinstellung CELL_FLASH_CACHE auf ESFC
So lösen Sie eine Tabelle in ESFC:
SQL> ALTER TABLE llamadas STORAGE (CELL_FLASH_CACHE DEFAULT);
Kann die aktuellen Einstellungen für die CELL_FLASH_CACHE-Klausel durch Abfragen von DBA_SEGMENTS, DBA_TABLES oder DBA_INDEXES untersuchen:
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