Utilisation de Database In-Memory avec Autonomous Database
La fonctionnalité Database In-Memory disponible sur Autonomous Database peut améliorer considérablement les performances des analyses en temps réel et des charges de travail mixtes.
- A propos de Database In-Memory
Oracle Database In-Memory (Database In-Memory) est une suite de fonctionnalités qui améliore considérablement les performances des analyses en temps réel et des charges de travail mixtes. - Activation des objets pour le remplissage en mémoire
Vous pouvez activer et désactiver les objets pour le remplissage dans la banque de colonnes en mémoire. - Redimensionnement du stockage en colonnes en mémoire
Lorsque votre instance Autonomous Database comporte 16 ECPU ou plus, la fonctionnalité Database In-Memory est activée par défaut et In-Memory peut utiliser jusqu'à 50 % de la mémoire SGA. - Désactivation du stockage en colonnes en mémoire
Vous pouvez désactiver le stockage en colonnes en mémoire pour votre instance Autonomous Database en modifiant la taille maximale en mémoire sur 0.
Rubrique parent : Caractéristiques
A propos de Database In-Memory
Oracle Database In-Memory (Database In-Memory) est une suite de fonctionnalités qui améliore considérablement les performances des analyses en temps réel et des charges de travail mixtes.
-
Vous avez activé la fonctionnalité In-Memory pour votre base de données sur site et êtes en train de migrer de la base de données sur site vers Autonomous Database.
-
Les requêtes de votre base de données passent la majeure partie de leur temps d'exécution à analyser et filtrer les données, ainsi qu'à effectuer des jointures et des agrégations groupées.
-
Vous devez améliorer le temps de réponse de vos requêtes de nature analytique.
Le stockage en colonnes en mémoire est la fonctionnalité clé de Database In-Memory. Le magasin de colonnes en mémoire réside dans la zone en mémoire, qui est une partie facultative de la mémoire SGA (System Global Area). Lorsque cette option est activée pour In-Memory, les tables, partitions, sous-partitions et vues matérialisées sont renseignées dans un format en colonnes dans le magasin de colonnes In-Memory. Ce format en colonnes est optimisé pour les analyses très rapides, ce qui permet aux requêtes analytiques d'exécuter des ordres de grandeur plus rapidement que les requêtes basées sur un format de ligne. Pour plus d'informations, reportez-vous à Oracle Database In-Memory.
Le stockage en colonnes en mémoire augmente dynamiquement au fil du temps pour s'adapter aux objets INMEMORY
les plus chauds. Vous pouvez utiliser la clause de table PRIORITY
ou disposer d'analyses de table continues pour vous assurer que le stockage en colonnes en mémoire augmente suffisamment pour votre charge globale. Pour plus d'informations, reportez-vous à Redimensionnement du stockage en colonnes en mémoire.
INMEMORY
dans les instructions DDL afin d'activer In-Memory pour les objets suivants :
-
Tables (y compris les tables externes)
-
Partitions ou sous-partitions
-
Vues matérialisées
Pour plus d'informations, reportez-vous à Activation des objets pour le remplissage en mémoire.
Pour activer Database In-Memory, tenez compte des points suivants :
-
Database In-Memory est uniquement disponible pour une instance Autonomous Database avec :
-
Le modèle de calcul ECPU
-
16 ECPU au minimum
-
-
Si vous redémarrez la base de données, les objets activés pour
INMEMORY
doivent être remplis à nouveau dans la banque de colonnes en mémoire. Selon le paramètre de priorité, la réalimentation peut se faire automatiquement ou lors du premier accès. Si vous surveillez les performances, vous remarquerez des performances plus lentes jusqu'à ce que l'objet soit rempli à nouveau.
Rubrique parent : Utilisation de Database In-Memory avec Autonomous Database
Activation des objets pour le remplissage en mémoire
Vous pouvez activer et désactiver les objets pour leur remplissage dans le magasin de colonnes en mémoire.
Seuls les objets avec la clause INMEMORY
peuvent être insérés dans le magasin de colonnes en mémoire. Utilisez les instructions DDL CREATE TABLE
ou ALTER TABLE
pour appliquer la clause INMEMORY
.
Par défaut, les objets sont créés avec l'attribut NO INMEMORY
, ce qui signifie qu'ils ne peuvent pas être insérés dans le magasin de colonnes en mémoire.
L'activation d'un objet en tant que INMEMORY
indique qu'un objet peut potentiellement résider dans le magasin de colonnes en mémoire. Le remplissage en mémoire est une étape distincte qui se produit lorsque la base de données lit les données existantes au format ligne, les transforme en format colonne, puis les stocke dans le magasin de colonnes en mémoire. Par défaut, toutes les colonnes d'un objet avec l'attribut INMEMORY
sont alimentées dans le magasin de colonnes en mémoire.
La définition de l'attribut INMEMORY
sur un objet implique que l'objet est candidat pour le remplissage dans le magasin de colonnes en mémoire. L'objet n'est pas immédiatement renseigné dans le magasin de colonnes en mémoire. Toutefois, vous pouvez utiliser la clause PRIORITY
avec l'attribut INMEMORY
pour contrôler la priorité d'alimentation dans le magasin de colonnes en mémoire. La clause PRIORITY
peut être indiquée avec les valeurs suivantes :
-
CRITICAL
: l'objet est rempli immédiatement après l'ouverture de la base de données. -
HIGH
: l'objet est rempli une fois que tous les objetsCRITICAL
ont été remplis, si de l'espace reste disponible dans le magasin de colonnes en mémoire. -
MEDIUM
: l'objet est rempli une fois que tous les objetsCRITICAL
etHIGH
ont été remplis et que de l'espace reste disponible dans le magasin de colonnes en mémoire. -
LOW
: l'objet est rempli une fois que tous les objetsCRITICAL
,HIGH
etMEDIUM
ont été remplis, si de l'espace reste disponible dans le magasin de colonnes en mémoire. -
NONE
: les objets ne sont remplis qu'après avoir été scannés pour la première fois, si de l'espace est disponible dans le magasin de colonnes en mémoire. La prioritéNONE
est la priorité par défaut.
Exemple de création d'une table avec l'attribut INMEMORY
:
CREATE TABLE im_emp (
id NUMBER, name VARCHAR2(20),
depno NUMBER, sal NUMBER,
mgr NUMBER,
loc VARCHAR2(20))
INMEMORY;
Cet exemple crée la table im_emp
avec l'attribut INMEMORY
. L'exemple utilise la priorité par défaut NONE
pour la clause INMEMORY
, ce qui signifie que la table n'est remplie qu'après avoir été analysée pour la première fois.
Exemple d'utilisation de la clause PRIORITY
avec l'attribut INMEMORY
:
CREATE TABLE im_emp_1 (
id NUMBER, name VARCHAR2(20),
depno NUMBER, sal NUMBER,
mgr NUMBER,
loc VARCHAR2(20))
INMEMORY PRIORITY CRITICAL;
Exemple de définition de l'attribut INMEMORY
pour une table existante :
ALTER TABLE employees INMEMORY;
Cet exemple définit l'attribut dans INMEMORY
pour la table employees
.
Vous pouvez également modifier une table afin de définir l'attribut INMEMORY
uniquement pour un sous-ensemble de colonnes de la table. Exemples :
ALTER TABLE im_emp_tb INMEMORY NO INMEMORY(depno);
Cet exemple définit l'attribut dans INMEMORY
pour im_emp_tb
, mais exclut la colonne depno
.
Pour plus d'informations, reportez-vous à INMEMORY_TABLE_CLAUSE.
INMEMORY
est activé pour une table, vous pouvez interroger la vue V$IM_SEGMENTS
pour déterminer si les données de la table sont remplies dans le magasin de colonnes en mémoire. Exemples :SELECT SEGMENT_NAME, POPULATE_STATUS
FROM V$IM_SEGMENTS
WHERE SEGMENT_NAME = 'IM_EMP';
Pour plus d'informations, voir V$IM_SEGMENTS.
NO INMEMORY
. Exemples :ALTER TABLE im_emp NO INMEMORY;
Pour plus d'informations, reportez-vous à Fonctionnement du remplissage en mémoire.
Remarques relatives à l'activation des objets pour le remplissage en mémoire :
-
La base de données ne remplit pas automatiquement les objets en mémoire avec le paramètre
PRIORITY
deNONE
. Toutefois, vous pouvez alimenter ces objets manuellement dans le magasin de colonnes en mémoire. Pour plus d'informations, reportez-vous à Remplissage manuel de la banque de colonnes IM et à Procédure DBMS_INMEMORY.POPULATE. -
Il doit y avoir des balayages continus de table pour s'assurer que le stockage en colonnes en mémoire augmente automatiquement suffisamment pour votre charge globale. Si un objet est partiellement rempli, le balayage de table peut utiliser à la fois In-Memory et Exadata Smart Scan.
Rubrique parent : Utilisation de Database In-Memory avec Autonomous Database
Dimensionner le stockage en colonnes en mémoire
Lorsque votre instance Autonomous Database comporte 16 ECPU ou plus, la fonctionnalité Database In-Memory est activée par défaut et In-Memory peut utiliser jusqu'à 50 % de la mémoire SGA.
La mémoire de la zone en mémoire n'est pas réservée à l'avance et sa taille initiale est de 0. La zone en mémoire augmente progressivement à chaque fois que l'espace disponible pour la population en mémoire est insuffisant.
Les objets du magasin en colonnes en mémoire sont gérés dynamiquement par la méthode AIM (Automatic In-Memory). La fonctionnalité en mémoire automatique est activée par défaut pour votre instance Autonomous Database.
AIM utilise des statistiques internes pour déterminer la fréquence d'accès aux objets et colonnes en mémoire. Si le magasin de colonnes en mémoire est plein et que d'autres segments plus fréquemment consultés bénéficient d'une alimentation dans le magasin de colonnes en mémoire, le magasin de colonnes en mémoire évite les segments inactifs.
Pour garantir que le jeu de données de travail est toujours alimenté, AIM évite automatiquement les segments froids (accès peu fréquent). Pour plus d'informations, reportez-vous à Automatisation de la gestion des objets en mémoire.
-
En modifiant le nombre d'ECPU pour votre instance Autonomous Database.
-
A l'aide de la procédure
DBMS_INMEMORY_ADMIN.SET_SGA_PERCENTAGE
pour modifier la taille maximale en mémoire. Vous pouvez indiquer une valeur comprise entre 0 et 70. Si vous indiquez une valeur égale à zéro (0), la base de données en mémoire est désactivée. Exemples :
Cet exemple modifie la taille maximale en mémoire à 60 % de la taille de la mémoire SGA.BEGIN DBMS_INMEMORY_ADMIN.SET_SGA_PERCENTAGE(60); END; /
Pour plus d'informations, reportez-vous à Procédure SET_SGA_PERCENTAGE.
Interrogez la vue V$INMEMORY_AREA
pour extraire les informations sur l'allocation d'espace dans la zone en mémoire. Exemples :
SELECT * FROM V$INMEMORY_AREA;
Pour plus d'informations, voir V$INMEMORY_AREA.
Rubrique parent : Utilisation de Database In-Memory avec Autonomous Database
Désactiver le stockage en colonnes en mémoire
Vous pouvez désactiver la banque de colonnes en mémoire pour votre instance Autonomous Database en modifiant la taille maximale en mémoire sur 0.
Exemples :
BEGIN
DBMS_INMEMORY_ADMIN.SET_SGA_PERCENTAGE(0);
END;
/
Cet exemple modifie la valeur de taille maximale en mémoire à zéro (0) et désactive Database In-Memory pour l'instance.
Pour plus d'informations, reportez-vous à Procédure SET_SGA_PERCENTAGE.
Rubrique parent : Utilisation de Database In-Memory avec Autonomous Database