Utilisation de Database In-Memory avec Autonomous AI 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 de base de données Autonomous AI comporte 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 de la banque de colonnes en mémoire
Vous pouvez désactiver la banque de colonnes en mémoire pour votre base de données Autonomous AI 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 la base de données Autonomous AI.
-
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 de base de données Autonomous AI avec :
-
Modèle de calcul ECPU
-
16 ECPU au minimum
-
-
Si vous redémarrez la base de données, les objets activés pour
INMEMORYdoivent ê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 AI 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 objetsCRITICALont é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 objetsCRITICALetHIGHont é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,HIGHetMEDIUMont é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éNONEest 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
PRIORITYdeNONE. 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 AI Database
Dimensionner le stockage en colonnes en stock
Lorsque votre instance de base de données Autonomous AI comporte 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 base de données Autonomous AI.
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 base de données Autonomous AI.
-
En utilisant la procédure
DBMS_INMEMORY_ADMIN.SET_SGA_PERCENTAGEpour 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 AI Database
Désactivation du stockage en colonnes en stock
Vous pouvez désactiver la banque de colonnes en mémoire pour votre base de données Autonomous AI 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 AI Database