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 d'objets pour le remplissage en mémoire
Vous pouvez activer et désactiver des objets pour le remplissage dans le magasin de colonnes en mémoire. - Redimensionnement du stockage en colonnes en mémoire
Lorsque votre instance Autonomous Database dispose de 16 ECPU ou plus, la fonctionnalité Database In-Memory est activée par défaut et jusqu'à 50 % de la mémoire SGA peut être utilisée par In-Memory. - 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 à 0.
Rubrique parent : Fonctionnalités
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é En mémoire pour votre base de données sur site et vous ê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 par groupe.
-
Vous devez améliorer le temps de réponse de vos requêtes de nature analytique.
La banque de colonnes en mémoire est la fonctionnalité clé de Database In-Memory. Le magasin de colonnes en mémoire se trouve 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, les partitions, les sous-partitions et les 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 des 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 le format de ligne. Pour plus d'informations, reportez-vous à Oracle Database In-Memory.
Le magasin de colonnes en mémoire croît dynamiquement au fil du temps pour prendre en charge les objets INMEMORY
les plus chauds. Vous pouvez utiliser la clause de table PRIORITY
ou effectuer des balayages continus de table pour vous assurer que la taille de la banque de colonnes en mémoire est suffisante pour votre charge globale. Pour plus d'informations, reportez-vous à Dimensionnement de la banque de colonnes en mémoire.
INMEMORY
dans les instructions LDD pour 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 d'objets pour l'alimentation en mémoire.
Pour activer Database In-Memory, tenez compte des points suivants :
-
Database In-Memory n'est disponible que pour une instance Autonomous Database avec :
-
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 renseignés à nouveau dans la banque de colonnes en mémoire. Selon le paramètre de priorité, le remplissage peut être effectué automatiquement ou lors du premier accès. Si vous surveillez les performances, vous remarquerez des performances plus lentes jusqu'à ce que l'objet soit réutilisé.
Rubrique parent : Utilisation de Database In-Memory avec Autonomous Database
Activation d'objets pour le remplissage en mémoire
Vous pouvez activer et désactiver des objets pour le remplissage dans le magasin de colonnes en mémoire.
Seuls les objets avec la clause INMEMORY
peuvent être alimentés dans la banque de colonnes en mémoire. Utilisez les instructions LDD 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 alimentés dans la banque de colonnes en mémoire.
L'activation d'un objet en tant que INMEMORY
indique qu'un objet peut potentiellement résider dans la banque de colonnes en mémoire. L'alimentation en mémoire est une étape distincte qui se produit lorsque la base de données lit des données au format ligne existantes, les transforme en format colonne, puis les stocke dans la banque de colonnes en mémoire. Par défaut, toutes les colonnes d'un objet avec l'attribut INMEMORY
sont renseignées dans la banque de colonnes en mémoire.
La définition de l'attribut INMEMORY
sur un objet implique que l'objet peut être alimenté dans la banque de colonnes en mémoire. L'objet n'est pas renseigné immédiatement dans la banque de colonnes en mémoire. Toutefois, vous pouvez utiliser la clause PRIORITY
avec l'attribut INMEMORY
pour contrôler la priorité du remplissage dans la banque 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 la banque de colonnes en mémoire. -
MEDIUM
: l'objet est rempli une fois que tous les objetsCRITICAL
etHIGH
ont été remplis, et l'espace reste disponible dans la banque 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 la banque de colonnes en mémoire. -
NONE
: les objets ne sont remplis qu'après avoir été analysés pour la première fois, si de l'espace est disponible dans la banque 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 de NONE
pour la clause INMEMORY
, ce qui signifie que la table n'est remplie qu'après la première analyse.
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 INMEMORY
de 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. Par exemple :
ALTER TABLE im_emp_tb INMEMORY NO INMEMORY(depno);
Cet exemple définit l'attribut 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 renseignées dans la banque de colonnes en mémoire. Par exemple :SELECT SEGMENT_NAME, POPULATE_STATUS
FROM V$IM_SEGMENTS
WHERE SEGMENT_NAME = 'IM_EMP';
Pour plus d'informations, reportez-vous à V$IM_SEGMENTS.
NO INMEMORY
. Par exemple :ALTER TABLE im_emp NO INMEMORY;
Pour plus d'informations, reportez-vous à Fonctionnement de l'alimentation en mémoire.
Remarques relatives à l'activation des objets pour la population en mémoire :
-
La base de données ne renseigne pas automatiquement les objets en mémoire avec le paramètre
PRIORITY
deNONE
. Toutefois, vous pouvez renseigner manuellement ces objets dans la banque de colonnes en mémoire. Pour plus d'informations, reportez-vous à Renseigner manuellement le stockage de colonnes IM et à Procédure DBMS_INMEMORY.POPULATE. -
Il doit y avoir des balayages continus de table pour s'assurer que le magasin de colonnes en mémoire est automatiquement suffisamment volumineux pour votre charge globale. Si un objet est partiellement rempli, l'analyse 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 stock
Lorsque votre instance Autonomous Database dispose de 16 ECPU ou plus, la fonctionnalité Database In-Memory est activée par défaut et jusqu'à 50 % de la mémoire SGA peut être utilisée par In-Memory.
La mémoire de la zone en mémoire n'est pas réservée à l'avance et la taille initiale de la zone en mémoire est 0. La zone en mémoire augmente progressivement chaque fois que l'espace est insuffisant pour la population en mémoire.
Les objets du magasin de colonnes en mémoire sont gérés dynamiquement par AIM (Automatic In-Memory). L'option 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 de l'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 expulse automatiquement les segments froids (fréquemment consultés). 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.
-
En utilisant la procédure
DBMS_INMEMORY_ADMIN.SET_SGA_PERCENTAGE
pour modifier la taille maximale en mémoire. Vous pouvez spécifier une valeur comprise entre 0 et 70. La spécification d'une valeur zéro (0) désactive Database In-Memory. Par exemple :
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. Par exemple :
SELECT * FROM V$INMEMORY_AREA;
Pour plus d'informations, reportez-vous à V$INMEMORY_AREA.
Rubrique parent : Utilisation de Database In-Memory avec Autonomous Database
Désactivation du stockage en colonnes en stock
Vous pouvez désactiver la banque de colonnes en mémoire pour votre instance Autonomous Database en modifiant la taille maximale en mémoire à 0.
Par exemple :
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