Usa database in memoria con Autonomous Database
La funzione Database In-Memory disponibile su Autonomous Database può migliorare in modo significativo le prestazioni per gli analytics in tempo reale e i carichi di lavoro misti.
- Informazioni su Database In-Memory
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 degli oggetti per la popolazione in memoria
È possibile abilitare e disabilitare gli oggetti per la popolazione nell'area di memorizzazione delle colonne In memoria. - 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 può essere utilizzata fino al 50% dell'area di memorizzazione colonne in memoria. - 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 su Database In-Memory
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 utilizzano 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 memoria è la funzione chiave di Database In-Memory. L'area di memorizzazione delle colonne In memoria si trova nell'area In memoria, che è una parte facoltativa dell'area SGA (System Global Area). Quando l'opzione è abilitata per In-Memory, le tabelle, le partizioni, le partizioni secondarie e le viste materializzate vengono popolate in formato colonna nell'area di memorizzazione delle 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 colonne In-Memory cresce dinamicamente nel tempo per accogliere gli oggetti INMEMORY
più caldi. È possibile utilizzare la clausola tabella PRIORITY
o eseguire scansioni continue delle tabelle per garantire che l'area di memorizzazione delle colonne In-Memory cresca in modo sufficiente per il carico di lavoro. Per ulteriori informazioni, vedere Dimensionamento 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 materiali
Per ulteriori informazioni, vedere Abilitazione degli 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
-
Un minimo di 16 ECPU
-
-
Se si riavvia il database, gli oggetti abilitati per
INMEMORY
richiedono un nuovo popolamento nell'area di memorizzazione delle colonne In memoria. A seconda dell'impostazione di priorità, il ripopolamento può avvenire automaticamente o al primo accesso. Se stai monitorando le prestazioni, noterai prestazioni più lente fino a quando l'oggetto non viene ripopolato.
Argomento padre: Usa Database In-Memory con Autonomous Database
Abilitazione di oggetti per la popolazione in memoria
È possibile abilitare e disabilitare gli oggetti per il popolamento nell'area di memorizzazione colonne In memoria.
Solo gli oggetti con la clausola INMEMORY
possono essere inseriti nell'area di memorizzazione delle colonne In memoria. 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
, il che significa che non sono idonei per essere inseriti nell'area di memorizzazione delle colonne In memoria.
L'abilitazione di un oggetto come INMEMORY
specifica che un oggetto può potenzialmente risiedere nell'area di memorizzazione delle colonne In memoria. La popolazione In-Memory è un passo separato che si verifica quando il database legge i dati esistenti in formato di riga, li trasforma in formato di colonna e li memorizza nell'area di memorizzazione delle colonne In-Memory. Per impostazione predefinita, tutte le colonne di un oggetto con l'attributo INMEMORY
vengono inserite nell'area di memorizzazione delle colonne In memoria.
L'impostazione dell'attributo INMEMORY
su un oggetto implica che l'oggetto sia un candidato per la popolazione nell'area di memorizzazione delle colonne In memoria. 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 delle colonne In memoria. 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 delle colonne In memoria. -
MEDIUM
: l'oggetto viene popolato dopo che tutti gli oggettiCRITICAL
eHIGH
sono stati popolati e lo spazio rimane disponibile nell'area di memorizzazione delle colonne In memoria. -
LOW
: l'oggetto viene popolato dopo che tutti gli oggettiCRITICAL
,HIGH
eMEDIUM
sono stati popolati, se lo spazio rimane disponibile nell'area di memorizzazione delle colonne In memoria. -
NONE
: gli oggetti vengono popolati solo dopo la prima scansione, se lo spazio è disponibile nell'area di memorizzazione delle colonne In memoria. 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 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;
In questo esempio viene impostato 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
.
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 inseriti nell'area di memorizzazione delle colonne In memoria. 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-Memory:
-
Il database non inserisce automaticamente negli oggetti in memoria l'impostazione
PRIORITY
diNONE
. Tuttavia, è possibile inserire manualmente questi oggetti nell'area di memorizzazione colonne In memoria. Per ulteriori informazioni, vedere Popolamento manuale dell'area di memorizzazione colonne IM e Procedura DBMS_INMEMORY.POPULATE. -
È necessario eseguire scansioni continue delle tabelle per garantire che l'area di memorizzazione delle colonne In-Memory cresca automaticamente in modo sufficiente per il carico di lavoro. Se un oggetto viene popolato parzialmente, la scansione delle tabelle 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 può essere utilizzata da In-Memory fino al 50% dell'area SGA.
La memoria per l'area in memoria non è riservata in anticipo e la dimensione iniziale dell'area in memoria è 0. L'Area In-Memory cresce gradualmente ogni volta che c'è spazio insufficiente per la popolazione In-Memory.
Gli oggetti nell'area di memorizzazione delle colonne in memoria vengono gestiti in modo dinamico dall'AIM (Automatic In-Memory). La funzione In-Memory automatica è abilitata per impostazione predefinita per Autonomous Database.
AIM utilizza le statistiche interne per determinare la frequenza di accesso agli oggetti e alle colonne In-Memory. Se l'area di memorizzazione delle colonne In memoria è piena e altri segmenti ad accesso più frequente trarrebbero vantaggio dalla popolazione nell'area di memorizzazione delle colonne In memoria, l'area di memorizzazione delle colonne In memoria evita i segmenti inattivi.
Per garantire che il data set di lavoro sia sempre popolato, AIM evita 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.
-
Per modificare la dimensione massima in memoria, utilizzare la procedura
DBMS_INMEMORY_ADMIN.SET_SGA_PERCENTAGE
. È 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:
Questo esempio modifica la dimensione massima in memoria al 60% della dimensione SGA.BEGIN DBMS_INMEMORY_ADMIN.SET_SGA_PERCENTAGE(60); END; /
Per ulteriori informazioni, vedere SET_SGA_PERCENTAGE Procedura.
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 memoria per Autonomous Database modificando la dimensione massima in memoria su 0.
Ad esempio:
BEGIN
DBMS_INMEMORY_ADMIN.SET_SGA_PERCENTAGE(0);
END;
/
Questo esempio modifica il valore massimo della dimensione in memoria su zero (0) e disabilita Database In-Memory per l'istanza.
Per ulteriori informazioni, vedere SET_SGA_PERCENTAGE Procedura.
Argomento padre: Usa Database In-Memory con Autonomous Database