Usa Database In-Memory con Autonomous Database
La funzione Database In-Memory disponibile in Autonomous Database può migliorare notevolmente le prestazioni per gli analytics in tempo reale e i carichi di lavoro misti.
- Informazioni sul database in memoria
Oracle Database In-Memory (Database In-Memory) è una suite di funzioni che migliora notevolmente le prestazioni per gli analytics in tempo reale e i carichi di lavoro misti. - Abilitazione di oggetti per la popolazione in memoria
È possibile abilitare e disabilitare gli oggetti per la popolazione nell'area di memorizzazione colonne In memoria. - Dimensione dell'area di memorizzazione colonne in memoria
Quando l'istanza di Autonomous Database dispone di 16 o più ECPU, la funzione Database In-Memory è abilitata per impostazione predefinita e fino al 50% dell'area di memorizzazione SGA può essere utilizzata da In-Memory. - Disabilitazione dell'area di memorizzazione colonne in memoria
È possibile disabilitare l'area di memorizzazione colonne in memoria per Autonomous Database modificando la dimensione massima in memoria su 0.
Argomento padre: Funzioni
Informazioni sulla memoria del database
Oracle Database In-Memory (Database In-Memory) è una suite di funzioni che migliora notevolmente le prestazioni per gli analytics in tempo reale e i carichi di lavoro misti.
-
Hai abilitato la funzione In-Memory per il tuo database in locale e ora stai eseguendo la migrazione dal database in locale ad Autonomous Database.
-
Le query nel database impiegano la maggior parte del tempo di esecuzione per la scansione e il filtro dei dati, nonché per l'esecuzione di join e aggregazioni group-by.
-
È necessario migliorare il tempo di risposta delle query di natura analitica.
L'area di memorizzazione colonne In-Memory è la funzione chiave di Database In-Memory. L'area di memorizzazione delle colonne In-Memory si trova nell'area In-Memory, che è una parte facoltativa dell'area SGA (System Global Area). Se abilitata per In-Memory, le tabelle, le partizioni, le partizioni secondarie e le viste materializzate vengono popolate in un formato a colonne nell'area di memorizzazione colonne In-Memory. Questo formato a colonne è ottimizzato per scansioni molto veloci, che possono consentire alle query analitiche di eseguire ordini di grandezza più velocemente rispetto alle query basate sul formato di riga. Per ulteriori informazioni, vedere Oracle Database In-Memory.
L'area di memorizzazione delle colonne In-Memory cresce in modo dinamico nel tempo per accogliere gli oggetti INMEMORY
più caldi. È possibile utilizzare la clausola della tabella PRIORITY
o disporre di scansioni continue delle tabelle per garantire che l'area di memorizzazione colonne In-Memory si ingrandisca abbastanza per il carico di lavoro. Per ulteriori informazioni, vedere Dimensione dell'area di memorizzazione colonne in memoria.
INMEMORY
nelle istruzioni DDL per abilitare In-Memory per i seguenti oggetti:
-
Tabelle (comprese le tabelle esterne)
-
Partizioni o partizioni secondarie
-
Viste materializzate
Per ulteriori informazioni, vedere Abilitazione di oggetti per la popolazione in memoria.
Per abilitare Database In-Memory, tenere presente quanto riportato di seguito.
-
Database In-Memory è disponibile solo per un'istanza di Autonomous Database con:
-
Il modello di computazione ECPU
-
Almeno 16 ECPU
-
-
Se si riavvia il database, gli oggetti abilitati per
INMEMORY
richiedono il ripopolamento nell'area di memorizzazione colonne In-Memory. A seconda dell'impostazione della priorità, il ripopolamento può avvenire automaticamente o al primo accesso. Se si stanno monitorando le prestazioni, si noteranno prestazioni più lente fino a quando l'oggetto non viene ripopolato.
Argomento padre: Usa Database In-Memory con Autonomous Database
Abilitazione degli oggetti per la popolazione in memoria
È possibile abilitare e disabilitare gli oggetti per la popolazione nell'area di memorizzazione colonne In-Memory.
Solo gli oggetti con la clausola INMEMORY
possono essere inseriti nell'area di memorizzazione colonne In-Memory. Utilizzare le istruzioni DDL CREATE TABLE
o ALTER TABLE
per applicare la clausola INMEMORY
.
Per impostazione predefinita, gli oggetti vengono creati con l'attributo NO INMEMORY
, ovvero non sono idonei per la popolazione nell'area di memorizzazione colonne In-Memory.
L'abilitazione di un oggetto come INMEMORY
sta specificando che un oggetto può potenzialmente risiedere nell'area di memorizzazione colonne In-Memory. La popolazione In-Memory è un passo separato che si verifica quando il database legge i dati esistenti in formato riga, li trasforma in formato colonna e quindi li memorizza nell'area di memorizzazione colonne In-Memory. Per impostazione predefinita, tutte le colonne di un oggetto con l'attributo INMEMORY
vengono inserite nell'area di memorizzazione colonne In-Memory.
L'impostazione dell'attributo INMEMORY
su un oggetto implica che l'oggetto sia un candidato per la popolazione nell'area di memorizzazione colonne In-Memory. L'oggetto non viene popolato immediatamente nell'area di memorizzazione colonne In memoria. Tuttavia, è possibile utilizzare la clausola PRIORITY
con l'attributo INMEMORY
per controllare la priorità della popolazione nell'area di memorizzazione colonne In-Memory. La clausola PRIORITY
può essere specificata con i seguenti valori:
-
CRITICAL
: l'oggetto viene popolato immediatamente dopo l'apertura del database. -
HIGH
: l'oggetto viene popolato dopo che tutti gli oggettiCRITICAL
sono stati popolati, se lo spazio rimane disponibile nell'area di memorizzazione colonne In-Memory. -
MEDIUM
: l'oggetto viene popolato dopo che tutti gli oggettiCRITICAL
eHIGH
sono stati popolati e lo spazio rimane disponibile nell'area di memorizzazione colonne In-Memory. -
LOW
: l'oggetto viene popolato dopo che tutti gli oggettiCRITICAL
,HIGH
eMEDIUM
sono stati popolati, se lo spazio rimane disponibile nell'area di memorizzazione colonne In-Memory. -
NONE
: gli oggetti vengono popolati solo dopo la prima scansione, se lo spazio è disponibile nell'area di memorizzazione colonne In-Memory. La prioritàNONE
è la priorità predefinita.
Esempio di creazione di una tabella con l'attributo INMEMORY
:
CREATE TABLE im_emp (
id NUMBER, name VARCHAR2(20),
depno NUMBER, sal NUMBER,
mgr NUMBER,
loc VARCHAR2(20))
INMEMORY;
In questo esempio viene creata la tabella im_emp
con l'attributo INMEMORY
. Nell'esempio viene utilizzata la priorità predefinita di NONE
per la clausola INMEMORY
, ovvero la tabella viene popolata solo dopo la prima scansione.
Esempio di utilizzo della clausola PRIORITY
con l'attributo INMEMORY
:
CREATE TABLE im_emp_1 (
id NUMBER, name VARCHAR2(20),
depno NUMBER, sal NUMBER,
mgr NUMBER,
loc VARCHAR2(20))
INMEMORY PRIORITY CRITICAL;
Esempio di impostazione dell'attributo INMEMORY
per una tabella esistente:
ALTER TABLE employees INMEMORY;
Questo esempio imposta l'attributo INMEMORY
per la tabella employees
.
È inoltre possibile modificare una tabella per impostare l'attributo INMEMORY
solo per un subset di colonne nella tabella. Ad esempio:
ALTER TABLE im_emp_tb INMEMORY NO INMEMORY(depno);
Questo esempio imposta l'attributo INMEMORY
per im_emp_tb
, ma esclude la colonna depno
.
Per ulteriori informazioni, vedere INMEMORY_TABLE_CLAUSE.
INMEMORY
per una tabella, è possibile eseguire una query sulla vista V$IM_SEGMENTS
per determinare se i dati della tabella vengono popolati nell'area di memorizzazione colonne In-Memory. Ad esempio:SELECT SEGMENT_NAME, POPULATE_STATUS
FROM V$IM_SEGMENTS
WHERE SEGMENT_NAME = 'IM_EMP';
Per ulteriori informazioni, vedere V$IM_SEGMENTS.
NO INMEMORY
. Ad esempio:ALTER TABLE im_emp NO INMEMORY;
Per ulteriori informazioni, vedere Funzionamento della popolazione in memoria.
Note per l'abilitazione degli oggetti per la popolazione in memoria:
-
Il database non inserisce automaticamente gli oggetti in memoria con l'impostazione
PRIORITY
diNONE
. Tuttavia, è possibile popolare manualmente questi oggetti nell'area di memorizzazione colonne In-Memory. Per ulteriori informazioni, vedere Inserimento manuale dell'area di memorizzazione colonne IM e DBMS_INMEMORY.POPULATE Procedure. -
Devono essere presenti scansioni continue delle tabelle per garantire che l'area di memorizzazione colonne In-Memory cresca automaticamente abbastanza per il carico di lavoro. Se un oggetto viene popolato parzialmente, la scansione della tabella può utilizzare sia In-Memory che Exadata Smart Scan.
Argomento padre: Usa Database In-Memory con Autonomous Database
Dimensionamento dell'area di memorizzazione colonne in memoria
Quando l'istanza di Autonomous Database dispone di 16 o più ECPU, la funzione Database In-Memory è abilitata per impostazione predefinita e fino al 50% dell'SGA può essere utilizzato da In-Memory.
La memoria per l'area In-Memory non è riservata in anticipo e la dimensione iniziale dell'area In-Memory è 0. L'Area In-Memory cresce gradualmente ogni volta che c'è spazio insufficiente per la popolazione In-Memory.
Gli oggetti nell'area di memorizzazione colonne In-Memory vengono gestiti in modo dinamico da Automatic In-Memory (AIM). Per impostazione predefinita, la memoria in entrata automatica è abilitata per Autonomous Database.
AIM utilizza statistiche interne per determinare la frequenza di accesso agli oggetti e alle colonne in memoria. Se l'area di memorizzazione colonne In-Memory è piena e altri segmenti ad accesso più frequente beneficerebbero della popolazione nell'area di memorizzazione colonne In-Memory, l'area di memorizzazione colonne In-Memory rimuove i segmenti inattivi.
Per garantire che il data set di lavoro sia sempre popolato, AIM rimuove automaticamente i segmenti freddi (a cui non si accede di frequente). Per ulteriori informazioni, vedere Automazione della gestione degli oggetti in memoria.
-
Modificando il conteggio ECPU per l'Autonomous Database.
-
Usando la procedura
DBMS_INMEMORY_ADMIN.SET_SGA_PERCENTAGE
per modificare la dimensione massima della memoria in entrata. È possibile specificare un valore compreso nell'intervallo tra 0 e 70. Se si specifica un valore pari a zero (0), il database in memoria viene disabilitato. Ad esempio:
In questo esempio la dimensione massima in memoria viene modificata al 60% della dimensione SGA.BEGIN DBMS_INMEMORY_ADMIN.SET_SGA_PERCENTAGE(60); END; /
Per ulteriori informazioni, vedere SET_SGA_PERCENTAGE Procedure.
Eseguire una query sulla vista V$INMEMORY_AREA
per recuperare le informazioni sull'allocazione dello spazio all'interno dell'area In-Memory. Ad esempio:
SELECT * FROM V$INMEMORY_AREA;
Per ulteriori informazioni, vedere V$INMEMORY_AREA.
Argomento padre: Usa Database In-Memory con Autonomous Database
Disabilitazione dell'area di memorizzazione colonne in memoria
È possibile disabilitare l'area di memorizzazione colonne In-Memory per Autonomous Database modificando la dimensione massima in-memory su 0.
Ad esempio:
BEGIN
DBMS_INMEMORY_ADMIN.SET_SGA_PERCENTAGE(0);
END;
/
In questo esempio il valore della dimensione massima in memoria viene modificato su zero (0) e viene disabilitato Database In-Memory per l'istanza.
Per ulteriori informazioni, vedere SET_SGA_PERCENTAGE Procedure.
Argomento padre: Usa Database In-Memory con Autonomous Database