Utiliser la mémoire cache de table externe pour améliorer les performances des tables externes
La mémoire cache de table externe dans Oracle Autonomous AI Database vous permet de mettre en mémoire cache les données fréquemment consultées à partir de tables externes de votre base de données.
La mémoire cache de table externe n'est prise en charge que pour Oracle AI Database 26ai.
- À propos de la mémoire cache de table externe dans la base de données d'IA autonome
Une mémoire cache de table externe est une zone de stockage dans votre base de données d'IA autonome qui stocke les données d'une table externe. - Démarrage rapide avec les caches de table externes
Fournit des exemples pour vous aider à commencer à créer et à alimenter des caches de table externe. - Sélectionner votre préférence de mise en mémoire cache
Décrit comment choisir la préférence de mise en mémoire cache appropriée, notamment le comportement de la mémoire cache et l'affectation de taille pour les tables externes. - Préalables à la création de la mémoire cache de table externe
Liste les préalables à la création de la mémoire cache de table externe. - Utiliser la mise en mémoire cache basée sur des politiques pour les tables externes
Décrit comment utiliser la mise en mémoire cache basée sur des politiques pour les tables externes dans la base de données d'IA autonome. - Utiliser la mise en mémoire cache automatique pour une table externe
Décrit comment utiliser la mise en mémoire cache automatique pour les tables externes dans la base de données d'IA autonome. - Surveiller et diagnostiquer la performance de la mémoire cache de table externe
La base de données autonome d'IA fournit des vues qui vous permettent de surveiller la mémoire cache de table externe. - Cas d'utilisation de la mise en mémoire cache de table externe
Décrit les scénarios courants dans lesquels la mise en mémoire cache de table externe est bénéfique.
Rubrique parent : Fonctions
À propos de la mémoire cache de table externe dans la base de données d'intelligence artificielle autonome
Une mémoire cache de table externe est une zone de stockage dans votre base de données Autonomous AI Database qui stocke les données d'une table externe.
Les données externes ne sont pas gérées par la base de données. Toutefois, vous pouvez utiliser les tables externes pour interroger les données en dehors de la base. Les interrogations sur les tables externes ne seront pas aussi rapides que les interrogations sur les tables de base de données, car chaque fois que vous accédez aux données, elles doivent être extraites des fichiers externes stockés dans le magasin d'objets.
La mémoire cache de table externe vous permet de stocker localement les données externes fréquemment consultées. Lorsque vous utilisez le cache, les interrogations sur des tables externes peuvent extraire des données directement à partir de la base de données de l'IA autonome, ce qui les accélère considérablement. Vous n'avez pas besoin de modifier les instructions SQL ou les flux de travail existants pour bénéficier d'un accès plus rapide, car ce mécanisme de mise en cache est totalement transparent pour les applications. Vous pouvez créer une mémoire cache de table externe pour les tables externes partitionnées et non partitionnées créées sur les tables Parquet, ORC, AVRO, CSV et Iceberg.
-
Performance améliorée pour l'analyse : Les interrogations sont plusieurs fois plus rapides pour les données externes fréquemment consultées, ce qui est idéal pour les tableaux de bord, les rapports et les outils d'analyse qui accèdent régulièrement aux mêmes données.
-
100 % transparent : Le mécanisme de mise en mémoire cache est entièrement transparent. Les applications peuvent bénéficier d'une vitesse améliorée sans nécessiter de modification de leurs interrogations, tableaux de bord ou applications.
-
Coût réduit du nuage : Dans une application multinuage, la mise en mémoire cache réduit le besoin d'extractions répétées de données externes à partir d'un stockage distant, réduisant ainsi les frais de trafic sortant associés à l'accès aux données dans les régions ou les nuages.
-
Contrôle de mise en mémoire cache flexible et détaillé : Vous pouvez mettre en mémoire cache tous les fichiers, un pourcentage de fichiers ou uniquement les données les plus récemment mises à jour. Vous pouvez contrôler les données mises en cache, la taille du cache et les limites de stockage pour les caches de table externes.
Les caches de table externes de votre base de données peuvent être gérés automatiquement ou au moyen de paramètres basés sur des stratégies. Grâce à la gestion du cache basée sur des stratégies, vous pouvez définir des stratégies simples pour alimenter, actualiser et supprimer des fichiers du cache, ce qui vous permet de contrôler avec précision le contenu et la maintenance du cache.
Pour plus d'informations, voir Interroger les données externes.
Démarrage rapide avec les caches de table externes
Fournit des exemples pour vous aider à commencer à créer et à alimenter des caches de table externe.
Créez un cache de table externe basé sur une politique pour le schéma SALES.
Lorsque vous créez un cache, il est initialement vide et activé pour l'alimentation. La taille du cache augmente chaque fois qu'un fichier est ajouté, en fonction des limites de quota d'espace définies pour le schéma, jusqu'à ce qu'il atteigne les limites affectées.
DBMS_EXT_TABLE_CACHE.CREATE_CACHE pour créer la mémoire cache de table externe pour votre schéma. Exemple :BEGIN
DBMS_EXT_TABLE_CACHE.CREATE_CACHE (
owner => 'SALES',
table_name => 'STORE_SALES',
partition_type => 'PATH');
END;
/
Cela crée une mémoire cache pour la table STORE_SALES dans le schéma SALES. STORE_SALES est une table externe pointant vers des données stockées dans le magasin d'objets.
Le paramètre owner spécifie le nom du schéma. Cet exemple crée une mémoire cache de table externe pour l'utilisateur SALES.
partition_type contrôle le fractionnement de la mémoire cache. Avec 'PATH', la mémoire cache est partitionnée par le chemin d'accès au dossier de chaque fichier source. FILE$PATH est une colonne masquée qui stocke le chemin d'accès au dossier (tout ce qui précède le nom du fichier).
…/n/<ns>/b/<bucket>/o/sales/2024/09/data1.parquet, FILE$PATH = 'sales/2024/09/' (le dossier).
USER_EXTERNAL_TAB_CACHES pour vérifier la création de la mémoire cache. Exemple :SELECT external_table_name, cached, disabled
FROM user_external_tab_caches;DBMS_EXT_TABLE_CACHE.VALIDATE pour valider une mémoire cache de table externe. Une erreur est signalée si la table externe référencée est introuvable dans la base de données. Exemple :BEGIN
DBMS_EXT_TABLE_CACHE.VALIDATE (
owner => 'SALES',
table_name => 'STORE_SALES',
raise_errors => TRUE);
END;
/Exécutez DBMS_EXT_TABLE_CACHE.ADD_TABLE pour alimenter une table entière dans la mémoire cache. Exemple :
BEGIN
DBMS_EXT_TABLE_CACHE.ADD_TABLE (
owner => 'SALES',
table_name => 'STORE_SALES');
END;
/Cet exemple tente d'alimenter la table STORE_SALES dans la mémoire cache.
Créer des caches de tables externes gérés automatiquement
Par défaut, la mise en mémoire cache automatique est désactivée. Les mémoires caches AUTO sont automatiquement créées lorsque vous activez la mise en mémoire cache automatique.
DBMS_CACHE.SET_USER_PROPERTY pour activer la mise en mémoire cache automatique de la table externe pour le schéma HR. Exemple : BEGIN
DBMS_CACHE.SET_USER_PROPERTY (
property_name => 'max_cache_size',
property_value_num => 10737418240);
END;
/Cet exemple active la mise en mémoire cache automatique pour le schéma HR et règle le paramètre MAX_CACHE_SIZE à 10737418240 octets, en spécifiant une allocation maximale de mémoire cache de 10 Go pour les tables externes du schéma HR. Il crée également les caches requis pour les tables externes et les alimente.
BEGIN
DBMS_CACHE.SET_GLOBAL_PROPERTY (
property_name => 'max_cache_percent',
property_value_num => 20);
END;
/Utilisez la propriété globale MAX_CACHE_PERCENT pour définir la limite de mémoire cache par défaut pour tous les utilisateurs. Lorsque vous réglez MAX_CACHE_PERCENT à 20, la mise en mémoire cache automatique des tables externes peut utiliser jusqu'à 20 % du quota d'espace-table affecté par chaque utilisateur (par exemple, un utilisateur avec un quota de 100 Go peut mettre en mémoire cache jusqu'à 20 Go, un utilisateur avec un quota de 10 Go jusqu'à 2 Go). Ce paramètre global s'applique uniquement à la mise en cache automatique et est défini par utilisateur, et non par limite totale pour tous les utilisateurs. Vous pouvez remplacer cette valeur par défaut pour des utilisateurs individuels en exécutant la procédure DBMS_CACHE.SET_USER_PROPERTY.
SELECT external_table_name, cached, auto
FROM all_external_tab_caches;DBMS_CACHE.REFRESH pour effectuer une actualisation sur demande pour tous les caches d'un utilisateur spécifié. Exemple :BEGIN
DBMS_CACHE.REFRESH (
owner => 'HR',
refresh_type => 'ALL');
END;
/Cet exemple met à jour les mémoires caches existantes et crée de nouvelles mémoires caches de table externe pour le schéma HR, si nécessaire. La propriété refresh_type spécifie la portée à laquelle l'actualisation est effectuée.
Sélectionner vos préférences de mise en mémoire cache
Le cache de tables externes est créé en tant qu'objet de schéma dans votre base de données, qui dispose d'un espace physique similaire à la façon dont les tables et les index sont stockés dans des fichiers de données. Lorsque vous créez un cache de table externe, une nouvelle table est créée dans votre schéma. Les limites de quota d'espace définies pour votre schéma s'appliquent également au cache de table externe.
-
Gestion du cache basée sur des stratégies
-
Vous définissez explicitement la façon dont les caches sont créés, alimentés, actualisés et retirés.
-
Offre un contrôle détaillé du contenu et du cycle de vie de la mémoire cache.
-
Convient lorsque le comportement de mise en cache prévisible ou personnalisé est requis.
-
-
Gestion automatique de la mémoire cache
-
La base de données crée, alimente, actualise et supprime automatiquement les caches.
-
Les actions dépendent des modèles d'interrogation de table externe et de l'utilisation de la charge globale.
-
Idéal pour les environnements où le comportement de mise en cache doit s'adapter dynamiquement sans intervention manuelle.
-
Préalables à la création de la mémoire cache de table externe
Répertorie les préalables à la création de la mémoire cache de table externe.
-
Vous ne pouvez créer un cache de table externe que dans votre propre schéma et pour les tables externes que vous possédez.
-
Un quota d'espace approprié doit être affecté à votre schéma pour garantir une capacité de stockage suffisante pour les données de la mémoire cache.
-
Vous devez disposer de données d'identification pour accéder aux fichiers de table externe stockés dans le magasin d'objets. Vous n'avez pas besoin de créer des données d'identification si vous activez les données d'identification du principal de ressource pour accéder au service de stockage d'objets pour Oracle Cloud Infrastructure.
Utiliser la mise en mémoire cache basée sur des politiques pour les tables externes
Décrit comment utiliser la mise en cache basée sur des politiques pour les tables externes dans Autonomous AI Database.
La mise en mémoire cache basée sur des stratégies vous permet de contrôler explicitement comment les données externes sont mises en mémoire cache, actualisées et gérées dans la base de données. Dans cette approche, vous définissez des politiques de mise en cache et gérez l'ensemble du cycle de vie du cache à l'aide des procédures PL/SQL disponibles dans l'ensemble DBMS_EXT_TABLE_CACHE. Ces procédures vous permettent d'effectuer explicitement diverses opérations de cycle de vie du cache, telles que la création et l'alimentation de caches, la suppression de fichiers du cache et l'activation ou la désactivation des caches.
Cette approche vous donne un contrôle détaillé du comportement du cache. Vous pouvez indiquer les fichiers de table externe ou le pourcentage de données de la table externe à mettre en mémoire cache, ce qui garantit une utilisation optimale de l'espace mémoire cache en fonction des besoins de la charge globale. Les procédures telles que ADD_BY_LIKE et ADD_LATEST_FILES vous permettent de filtrer et d'alimenter les fichiers dans la mémoire cache en fonction de plusieurs paramètres, tels que les modèles de nom de fichier, les heures de modification ou les critères de fraîcheur des données. De même, vous pouvez utiliser des procédures telles que CLEAR, RETIRE_FILES ou DROP_BY_LIKE pour supprimer des fichiers de la mémoire cache.
Comme les caches basés sur des stratégies ne sont pas gérés par un algorithme d'éviction automatique, la base de données ne les supprime pas automatiquement sous la pression de l'espace. Si l'espace du cache devient indisponible, les nouveaux fichiers risquent de ne pas être alimentés tant que l'espace supplémentaire n'est pas libéré. Cette approche offre une plus grande flexibilité et est idéale pour les charges de travail où vous avez besoin de plus de contrôle sur le contenu du cache.
Pour plus d'informations, voir Ensemble DBMS_EXT_TABLE_CACHE.
L'organigramme suivant décrit les étapes de gestion des caches basés sur des politiques à l'aide de l'ensemble DBMS_EXT_TABLE_CACHE. Il comprend des étapes clés telles que la création, l'alimentation et la suppression de la mémoire cache.
Rubriques
- Alimenter des fichiers dans la mémoire cache de table externe
Décrit comment alimenter la mémoire cache basée sur des politiques créée précédemment. - Supprimer des fichiers de la mémoire cache de table externe
Affiche des exemples pour supprimer des fichiers de la mémoire cache de table externe. - Désactiver et activer la mémoire cache de table externe
Affiche des exemples pour désactiver et activer la mémoire cache de table externe. - Supprimer la mémoire cache de table externe
Affiche un exemple de suppression de la mémoire cache de table externe. - Définir des préférences de dimensionnement facultatives pour les caches basés sur des politiques
Décrit comment définir des préférences de dimensionnement pour les caches de table externe basés sur des politiques dans la base de données autonome d'IA.
Alimenter les fichiers dans la mémoire cache de table externe
Décrit comment alimenter la mémoire cache basée sur une politique créée précédemment.
Après avoir créé un cache, vous pouvez alimenter les fichiers dans le cache. L'alimentation des fichiers charge le contenu des fichiers de table externe indiqués dans le cache. Vous pouvez choisir d'alimenter tous les fichiers à partir d'une table, d'un pourcentage spécifique de la table ou de spécifier une condition de filtre pour limiter les fichiers à alimenter. Par exemple, vous pouvez filtrer les fichiers en fonction de leur nom ou d'un intervalle de dates.
-
Selon le quota d'espace affecté au schéma, Oracle tente d'alimenter les fichiers dans la mémoire cache. Si la limite de quota affectée est atteinte, Oracle arrête l'alimentation des fichiers, sauf si l'espace requis est alloué.
-
La mémoire cache de la table externe ne s'actualise pas automatiquement. Pour mettre à jour la mémoire cache lorsqu'un fichier du magasin d'objets est modifié, vous devez réalimenter le fichier.
-
Lorsqu'un fichier est supprimé du magasin d'objets, les données mises en cache correspondantes deviennent immédiatement non valides et ne peuvent pas être extraites.
Ajouter une table à la mémoire cache de table externe
Utilisez DBMS_EXT_TABLE_CACHE.ADD_TABLE pour alimenter une table entière ou un certain pourcentage de la table externe dans la mémoire cache.
Exemples
BEGIN
DBMS_EXT_TABLE_CACHE.ADD_TABLE (
owner => 'SALES',
table_name => 'STORE_SALES');
END;
/Cet exemple tente d'alimenter la table STORE_SALES dans la mémoire cache, en ignorant tous les fichiers existants qui ont déjà été alimentés.
BEGIN
DBMS_EXT_TABLE_CACHE.ADD_TABLE (
owner => 'SALES',
table_name => 'STORE_SALES',
percent_files => 80);
END;
/Cet exemple tente d'alimenter 80 % de la table STORE_SALES dans la mémoire cache, en ignorant tous les fichiers existants qui ont déjà été alimentés.
Le paramètre percent_files est facultatif. Si vous ne spécifiez pas ce paramètre, toute la table est alimentée dans la mémoire cache.
Pour plus d'informations, voir ProcédureADD_TABLE.
Ajouter des fichiers à la mémoire cache de table externe
-
ADD_FILE: Pour ajouter un seul fichier dans la mémoire cache. -
ADD_BY_LIKE: Pour ajouter un ou plusieurs fichiers spécifiés en fonction des filtres de chemin spécifiés. -
ADD_LATEST_FILES: Pour ajouter un ou plusieurs fichiers en fonction de l'intervalle de temps spécifié.
Exemples
DBMS_EXT_TABLE_CACHE.ADD_FILE pour alimenter un seul fichier dans la mémoire cache de table externe. Exemple :BEGIN
DBMS_EXT_TABLE_CACHE.ADD_FILE (
owner => 'SALES',
table_name => 'STORE_SALES',
file_url => 'https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/salesdata.parquet'
);
END;
/Cet exemple charge les données du fichier salesdata.parquet dans la mémoire cache.
Cet exemple ignore l'alimentation du fichier dans le cache si le fichier spécifié existe dans le cache et n'a pas été modifié depuis la dernière mise en cache du fichier.
Pour plus d'informations, voir ProcédureADD_FILE.
DBMS_EXT_TABLE_CACHE.ADD_BY_LIKE pour alimenter un ou plusieurs fichiers dans la mémoire cache de la table externe. Exemple :BEGIN
DBMS_EXT_TABLE_CACHE.ADD_BY_LIKE (
owner => 'SALES',
table_name => 'STORE_SALES',
path_filters => '["https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/sales%.parquet",
"https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/customer%.parquet"]'
);
END;
/Cet exemple alimente tous les fichiers avec des noms commençant par sales ou customer, tout en excluant les fichiers déjà alimentés.
BEGIN
DBMS_EXT_TABLE_CACHE.ADD_BY_LIKE (
owner => 'SALES',
table_name => 'STORE_SALES',
path_filters => '["https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/sales#_data1.parquet",
"https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/sales#_data2.parquet"]',
esc_char => '#',
force => TRUE);
END;
/Cet exemple charge les fichiers sales_data1.parquet et sales_data2.parquet dans la mémoire cache.
Dans cet exemple, le caractère '#' est défini en tant que caractère d'échappement. Le caractère '_' suivant '#' est traité comme un trait de soulignement littéral, et non comme un caractère générique correspondant à un seul caractère.
Pour plus d'informations, voir ProcédureADD_BY_LIKE.
DBMS_EXT_TABLE_CACHE.ADD_LATEST_FILES pour alimenter un ou plusieurs fichiers en fonction de la date de dernière modification dans la mémoire cache de la table externe. Exemple :BEGIN
DBMS_EXT_TABLE_CACHE.ADD_LATEST_FILES (
owner => 'SALES',
table_name => 'STORE_SALES',
since => INTERVAL '7' DAY,
max_files => 5,
force => TRUE);
END;
/Le paramètre since spécifie l'intervalle de temps; seuls les fichiers modifiés au cours des sept (7) derniers jours peuvent être alimentés dans la mémoire cache.
Le paramètre max_files limite le nombre de fichiers pouvant être alimentés dans la mémoire cache. Cet exemple ne charge que cinq (5) fichiers.
Le paramètre force force le remplacement des fichiers spécifiés dans la mémoire cache même si les fichiers n'ont pas été modifiés.
Pour plus d'informations, voir ProcédureADD_LATEST_FILES.
Supprimer des fichiers de la mémoire cache de table externe
Affiche des exemples pour supprimer des fichiers de la mémoire cache de table externe.
Effacer la mémoire cache de table externe
Utilisez DBMS_EXT_TABLE_CACHE.CLEAR pour supprimer tous les fichiers de la mémoire cache de table externe. Exemple :
BEGIN
DBMS_EXT_TABLE_CACHE.CLEAR (
owner => 'SALES',
table_name => 'STORE_SALES');
END;
/Cet exemple supprime tous les fichiers de la mémoire cache STORE_SALES et libère tout l'espace utilisé par les fichiers supprimés.
Pour plus d'informations, voir Procédure de nettoyage.
Supprimer des fichiers de la mémoire cache de table externe
-
DROP_FILE: Pour supprimer un seul fichier de la mémoire cache. -
DROP_BY_LIKE: Pour supprimer un ou plusieurs fichiers de la mémoire cache en fonction des filtres de chemin spécifiés. -
RETIRE_FILES: Pour supprimer un ou plusieurs fichiers de la mémoire cache en fonction de l'intervalle spécifié.
Exemples
Utilisez DBMS_EXT_TABLE_CACHE.DROP_FILE pour supprimer un fichier de la mémoire cache de table externe. Exemple :
BEGIN
DBMS_EXT_TABLE_CACHE.DROP_FILE (
owner => 'SALES',
table_name => 'STORE_SALES',
file_url => 'https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/salesdata.parquet'
);
END;
/Cet exemple supprime le fichier salesdata.parquet de la mémoire cache et libère tout l'espace utilisé par le fichier supprimé.
Pour plus d'informations, voir ProcédureDROP_FILE.
Utilisez DBMS_EXT_TABLE_CACHE.DROP_BY_LIKE pour supprimer un ou plusieurs fichiers en fonction du paramètre path_filters. Exemple :
BEGIN
DBMS_EXT_TABLE_CACHE.DROP_BY_LIKE (
owner => 'SALES',
table_name => 'STORE_SALES',
path_filters => '["https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/salesdata.parquet",
"https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/salesdata1.parquet"]'
);
END;
/Cet exemple supprime les fichiers salesdata.parquet et salesdata1.parquet de la mémoire cache et libère tout l'espace utilisé par les fichiers supprimés.
BEGIN
DBMS_EXT_TABLE_CACHE.DROP_BY_LIKE (
owner => 'SALES',
table_name => 'STORE_SALES',
path_filters => '["https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/sales#_data1.parquet",
"https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/sales#_data2.parquet"]'
);
END;
/Cet exemple supprime les fichiers sales#_data1 et sales#_data2 de la mémoire cache et libère tout l'espace utilisé par les fichiers supprimés.
Dans cet exemple, le caractère '#' est défini en tant que caractère d'échappement. Le caractère '_' suivant '#' est traité comme un trait de soulignement littéral, et non comme un caractère générique correspondant à un seul caractère.
Pour plus d'informations, voir ProcédureDROP_BY_LIKE.
Utilisez DBMS_EXT_TABLE_CACHE.RETIRE_FILES pour supprimer un ou plusieurs fichiers en fonction de l'intervalle spécifié. Exemple :
BEGIN
DBMS_EXT_TABLE_CACHE.RETIRE_FILES (
owner => 'SALES',
table_name => 'STORE_SALES',
before => INTERVAL '30' DAY);
END;
/Cet exemple supprime les fichiers qui datent de plus de trente (30) jours du cache et libère tout l'espace utilisé par les fichiers supprimés.
Pour plus d'informations, voir ProcédureRETIRE_FILES.
Les exemples ci-dessus suppriment un ou plusieurs fichiers du cache tout en conservant le cache. Vous pouvez charger à nouveau les fichiers dans le cache si nécessaire. Pour plus d'informations, voir Alimenter les fichiers dans la mémoire cache de table externe.
Désactiver et activer la mémoire cache de table externe
Affiche des exemples pour désactiver et activer la mémoire cache de table externe.
Exécutez DBMS_EXT_TABLE_CACHE.DISABLE pour désactiver la mémoire cache de table externe de la base de données. La désactivation d'une mémoire cache ne supprime pas les données de la mémoire cache; elle est marquée DISABLED et l'optimiseur ne peut pas utiliser la mémoire cache pour les réécritures d'interrogation.
Exemple
BEGIN
DBMS_EXT_TABLE_CACHE.DISABLE (
owner => 'SALES',
table_name => 'STORE_SALES');
END;
/Cet exemple désactive la mémoire cache STORE_SALES.
Pour plus d'informations, voir Procédure DISABLE.
Après avoir désactivé une mémoire cache de table externe, utilisez DBMS_EXT_TABLE_CACHE.ENABLE pour activer la mémoire cache.
BEGIN
DBMS_EXT_TABLE_CACHE.ENABLE (
owner => 'SALES',
table_name => 'STORE_SALES'
);
END;
/Cet exemple active la mémoire cache STORE_SALES.
Pour plus d'informations, voir Procédure ENABLE.
Supprimer la mémoire cache de table externe
Affiche un exemple de suppression de la mémoire cache de table externe.
Exécutez DBMS_EXT_TABLE_CACHE.DROP_CACHE pour supprimer une mémoire cache de table externe. La procédure DBMS_EXT_TABLE_CACHE.DROP_CACHE supprime la mémoire cache de table externe spécifiée de la base de données et libère l'espace de stockage associé à la mémoire cache.
Exemple :
BEGIN
DBMS_EXT_TABLE_CACHE.DROP_CACHE (
owner => 'SALES',
table_name => 'STORE_SALES');
END;
/Cet exemple supprime la mémoire cache STORE_SALES du schéma SALES.
La suppression d'un cache supprime ses métadonnées du dictionnaire de données et supprime toutes ses données mises en cache.
Pour plus d'informations, voir ProcédureDROP_CACHE.
USER_EXTERNAL_TAB_CACHES pour vérifier que la mémoire cache a été supprimée. Exemple :SELECT external_table_name, cached
FROM user_external_tab_caches;Pour plus d'informations, voir Vues DBA_EXTERNAL_TAB_CACHES et USER_EXTERNAL_TAB_CACHES.
Définir des préférences de dimensionnement facultatives pour les caches basés sur des politiques
Décrit comment définir les préférences de dimensionnement pour les caches de table externe basés sur des politiques dans la base de données Autonomous AI Database.
Par défaut, la mémoire cache de table externe est désactivée pour un utilisateur. Pour activer et créer la mémoire cache de table externe, utilisez la procédure DBMS_EXT_TABLE_CACHE.CREATE_CACHE. Le cache est créé dans votre schéma par défaut et hérite des limites de quota d'espace définies pour votre schéma. Toutefois, vous pouvez également utiliser la procédure DBMS_EXT_TABLE_CACHE.SET_USER_PROPERTY pour définir des quotas d'espace pour la mémoire cache de table externe. Vous utilisez les paramètres PROPERTY_NAME et PROPERTY_VALUE de la procédure DBMS_EXT_TABLE_CACHE.SET_USER_PROPERTY pour définir les limites de quota d'espace.
Le paramètre PROPERTY_NAME accepte les valeurs MAX_CACHE_SIZE et MAX_CACHE_PERCENT. La propriété MAX_CACHE_SIZE spécifie la taille totale de la mémoire cache externe en octets. La propriété MAX_CACHE_PERCENT spécifie la taille totale de la mémoire cache externe en tant que pourcentage du quota de l'utilisateur spécifié.
Exemples
BEGIN
DBMS_EXT_TABLE_CACHE.SET_USER_PROPERTY (
property_name => 'MAX_CACHE_PERCENT',
property_value => 50,
owner => 'SALES');
END;
/
Cet exemple règle la préférence de mise en mémoire cache à MAX_CACHE_PERCENT pour le schéma SALES.
La valeur property_value est de 50 %, ce qui indique que le quota d'espace de mémoire cache pour le schéma SALES est un maximum de 50 % du quota d'espace total défini pour SALES.
BEGIN
DBMS_EXT_TABLE_CACHE.SET_USER_PROPERTY (
owner => 'SALES',
property_name => 'MAX_CACHE_SIZE',
property_value => 5368709120);
END;
/Cet exemple règle la préférence de mise en mémoire cache à MAX_CACHE_SIZE pour le schéma SALES.
property_value est 5368709120, qui spécifie que la taille maximale de la mémoire cache pour le schéma SALES est de 5 Go au maximum.
Pour plus d'informations, voir Procédure SET_USER_PROPERTY et Procédure CREATE_CACHE.
Utilisez DBMS_EXT_TABLE_CACHE.GET_USER_PROPERTY pour extraire les propriétés de taille de mémoire cache.
Exemple :
SET SERVEROUTPUT ON
DECLARE
max_cache_sz NUMBER,
BEGIN
max_cache_sz := DBMS_EXT_TABLE_CACHE.GET_USER_PROPERTY (
property_name => 'MAX_CACHE_SIZE',
owner => 'SALES');
END;
/Pour plus d'informations, voir Fonction GET_USER_PROPERTY.
Notez l'ordre de priorité suivant pour définir les propriétés de taille de cache :
-
Lorsque
MAX_CACHE_SIZE,MAX_CACHE_PERCENTet le quota d'espace sont définis,MAX_CACHE_PERCENTa préséance surMAX_CACHE_SIZE. -
Lorsque seul
MAX_CACHE_SIZEest défini et queMAX_CACHE_PERCENTou le quota d'espace n'est pas défini,MAX_CACHE_SIZEa préséance. -
Lorsque seul le quota d'espace est défini et que
MAX_CACHE_SIZEetMAX_CACHE_PERCENTne sont pas définis, le quota de taille de mémoire cache est par défaut égal à 10 % du quota de schéma total. -
Lorsque
MAX_CACHE_SIZE,MAX_CACHE_PERCENTou le quota d'espace n'est pas défini, le quota d'espace de mémoire cache prend par défaut la valeurUNLIMITED.
Pour surveiller l'utilisation de l'espace de mémoire cache, interrogez la colonne
CACHE_CUR_SIZE dans les vues ALL_EXTERNAL_TAB_CACHES. Pour plus d'informations, voir Vues DBA_EXTERNAL_TAB_CACHES et USER_EXTERNAL_TAB_CACHES.
Utiliser la mise en mémoire cache automatique pour la table externe
Décrit comment utiliser la mise en cache automatique pour les tables externes dans Autonomous AI Database.
Lorsque vous activez la mise en mémoire cache automatique pour votre base de données, celle-ci gère automatiquement l'ensemble du cycle de vie de la mémoire cache, y compris la création, l'alimentation, l'actualisation et la suppression, sans que vous ayez à intervenir. Oracle utilise des mécanismes internes pour déterminer quelles tables externes peuvent bénéficier de la mise en mémoire cache, quand actualiser les caches et quand les supprimer en fonction des modèles d'utilisation et de l'espace de stockage disponible. Cette approche réduit les frais généraux liés à la gestion du cache, car l'utilisation du cache est surveillée en continu, ce qui garantit que les données de table externe fréquemment consultées restent disponibles dans le cache afin d'améliorer les temps de réponse aux interrogations.
Par défaut, la mise en mémoire cache automatique n'est pas activée dans la base de données. Pour l'activer, vous devez régler la taille de la mémoire cache à une valeur différente de zéro à l'aide de procédures telles que DBMS_CACHE.SET_USER_PROPERTY fournies dans l'ensemble DBMS_CACHE. Vous pouvez configurer la mise en cache automatique pour un utilisateur spécifique ou en tant que paramètre par défaut pour tous les utilisateurs de base de données, selon vos besoins.
Lorsque la mise en mémoire cache automatique des tables externes est activée, Oracle crée des mémoires caches de tables externes marquées AUTO et alimente toutes les données correspondantes d'une table externe dans sa mémoire cache si le quota le permet. Les mémoires caches AUTO sont actualisées automatiquement selon un programme régulier. Toutefois, vous pouvez également utiliser des procédures DBMS_CACHE.REFRESH ou DBMS_CACHE.CLEAR pour actualiser ou supprimer vos caches, respectivement.
Oracle gère les mémoires caches AUTO à l'aide d'un algorithme d'expulsion similaire à l'algorithme Least Recent Used (LRU). En cas de sous-pression d'espace, les caches qui ont fait l'objet d'un accès le moins récent sont automatiquement supprimés au cours du cycle d'actualisation pour libérer l'espace de stockage.
Rubriques
- Activer la mise en mémoire cache automatique pour les tables externes
Décrit comment configurer les propriétés de mise en mémoire cache automatique. - Actualisation des caches de table externes
Affiche un exemple d'actualisation des caches AUTO pour le schéma spécifié. - Supprimer les caches de table externe
Affiche un exemple pour supprimer les caches AUTO pour le schéma spécifié.
Activer la mise en mémoire cache automatique pour les tables externes
Décrit comment configurer les propriétés de mise en cache automatique.
Par défaut, la mise en mémoire cache automatique est désactivée. Vous pouvez activer la mise en mémoire cache automatique pour vos tables externes, globalement pour tous les utilisateurs de la base de données ou pour un utilisateur spécifique. Une fois la mise en cache automatique activée, la base de données crée automatiquement des mises en cache de tables externes. Tous les caches nouvellement créés sont marqués comme AUTO. Les caches existants continuent de suivre les paramètres de gestion du cache basés sur des stratégies.
Vous utilisez DBMS_CACHE.SET_GLOBAL_PROPERTY ou DBMS_CACHE.SET_USER_PROPERTY pour définir les propriétés de mise en mémoire cache AUTO, notamment les propriétés permettant d'activer la mise en mémoire cache automatique globalement ou pour un utilisateur spécifié, respectivement. Les préférences de mise en cache au niveau de l'utilisateur ont préséance sur les préférences de mise en cache globales. Utilisez les paramètres PROPERTY_NAME et PROPERTY_VALUE de ces procédures pour définir les limites de quota d'espace pour les mémoires caches de table externes.
Selon le quota d'espace spécifié, Oracle crée les caches et tente d'alimenter l'ensemble des données de la table externe dans le cache. Le processus d'alimentation échoue si la taille du cache n'est pas suffisante pour prendre en charge l'ensemble des données de la table externe.
Pour surveiller l'utilisation de l'espace de mémoire cache, interrogez la colonne
CACHE_CUR_SIZE dans les vues ALL_EXTERNAL_TAB_CACHES. Pour plus d'informations, voir Vues DBA_EXTERNAL_TAB_CACHES et USER_EXTERNAL_TAB_CACHES.
Rubrique parent : Utiliser la mise en mémoire cache automatique pour une table externe
Actualisation des caches de tables externes
La figure présente un exemple d'actualisation des caches AUTO pour le schéma spécifié.
-
Ajoutez de nouveaux caches.
-
Supprimez les caches non valides (les caches qui deviennent inaccessibles sont marqués comme non valides et sont supprimés lors du cycle d'actualisation suivant).
-
Mettre à jour ou réalimenter les caches existants.
-
Déposez les caches les moins consultés récemment sous la pression de l'espace.
Vous pouvez également utiliser la procédure DBMS_CACHE.REFRESH pour effectuer une actualisation sur demande pour tous les caches de l'utilisateur HR.
Rubrique parent : Utiliser la mise en mémoire cache automatique pour une table externe
Supprimer les caches de table externes
Affiche un exemple pour supprimer des caches AUTO pour le schéma spécifié.
Au cours de chaque cycle d'actualisation, les caches non valides et les caches les moins récents sont supprimés de la base de données. Vous pouvez également utiliser la procédure DBMS_CACHE.CLEAR pour supprimer tous les caches d'un utilisateur spécifié.
Rubrique parent : Utiliser la mise en mémoire cache automatique pour une table externe
Surveiller et diagnostiquer la performance de la mémoire cache des tables externes
Autonomous AI Database fournit des vues qui vous permettent de surveiller la mémoire cache de table externe.
| Voir | Description |
|---|---|
|
Fournit des informations sur tous les caches de tables externes de la base de données ou sur les caches de tables externes d'un utilisateur. |
|
|
Fournit des informations sur les fichiers du stockage en nuage accessibles à l'utilisateur courant et appartenant à des tables externes mises en cache. |
|
|
Fournit des informations sur les fichiers du stockage en nuage appartenant à l'utilisateur courant et appartenant à des tables externes mises en cache. Cette vue n'affiche pas la colonne |
Ces vues fournissent des informations détaillées sur la façon dont les données mises en cache pour les tables externes sont stockées, consultées et mises à jour dans la base de données. Ces vues vous permettent de surveiller les performances du cache, d'identifier les données obsolètes ou obsolètes et d'analyser l'utilisation de l'espace pour garantir une efficacité optimale des interrogations. En surveillant ces vues, vous pouvez détecter le moment où les caches doivent être actualisés, vérifier que la taille des caches respecte les limites configurées et diagnostiquer les goulots d'étranglement liés à l'accès aux données externes.
Exemples :
SELECT table_name, cached, stale, last_refreshed, last_accessed
FROM all_external_tab_cache_locations
ORDER BY stale DESC, usage_count DESC;L'interrogation suivante fournit des informations sur l'inventaire du cache et l'utilisation de l'espace :
SELECT external_table_name, cache_cur_size, cache_max_size, disabled
FROM user_external_tab_caches;Cas d'utilisation pour la mise en mémoire cache de table externe
Décrit les scénarios courants dans lesquels la mise en cache des tables externes est bénéfique.
| Cas d'utilisation | Que mettre en cache | Incidence des coûts | Incidence sur la performance | Notes |
|---|---|---|---|---|
|
BI interactif ou tableaux de bord sur des tables externes |
Tables externes ou partitions fréquemment interrogées alimentant des tableaux de bord |
Élimine les lectures répétées dans différents nuages ou régions |
Conserve les données chaudes locales pour des temps de réponse plus rapides et cohérents et évite les démarrages à froid |
C'est le scénario le plus courant |
|
Analyse multinuage (par exemple, Autonomous AI Database sur OCI lisant S3 ou GCS ou Azure) |
Jeux de données chauds accessibles à partir de magasins d'objets non OCI |
Réduit le trafic sortant entre les nuages et les frais de demande du fournisseur |
Supprime les E/S distantes et la latence réseau |
Réduire les coûts et la latence |
|
Accès inter-région (même nuage) |
Données externes dans une autre région |
Évite le trafic sortant inter-régions lors des balayages répétés |
Réduit la latence en localisant les lectures |
Même logique que le multinuage. |
|
Actualisation de la vue matérialisée sur les données externes |
Tables externes sources pour les vues matérialisées |
Réduit le trafic sortant répétitif pour les actualisations programmées |
Stabilise et accélère le rafraîchissement de la vue matérialisée; réduit le temps de balayage à distance |
Idéal pour les agrégats en temps quasi réel |
|
Pipelines de fichiers les plus récents (zone d'atterrissage) |
|
Les dernières données sont toujours chaudes |
||
|
Données de consultation ou de référence petites mais fréquemment jointes |
Petites tables externes utilisées dans les jointures |
Empêche la surcharge due à de nombreuses petites demandes |
Conserve les données de consultation locales pour les jointures |
Les petites données du dictionnaire sont toujours à jour et n'ont pas besoin de gérer des processus ETL complexes |
|
Science des données et ingénierie des caractéristiques |
Entraînement ou jeux de fonctions réutilisés dans des tables externes |
Moins de lectures à distance pendant le travail itératif |
Analyses répétées plus rapides pendant l'expérimentation |
Fonctionne bien avec les boucles axées sur les ordinateurs portables |
|
Magasin d'objets saturé ou ralenti |
Toute table externe à trafic élevé |
Moins de tentatives pour de nombreux utilisateurs |
Protège les interrogations à partir de la limitation du stockage et du débit variable |
Améliore la prévisibilité du contrat de niveau de service |
|
Iceberg ou grands lacs partitionnés |
Partitions chaudes ou instantanés lus fréquemment |
Évite les lectures répétées des mêmes bandes de parquet |
Localise les pages de données pour les partitions chaudes; temps d'interrogation plus constant |
Lien croisé vers la page de configuration d'Iceberg |
|
Exploration ad hoc à grande échelle |
Tables externes provisoires qui voient un accès répété |
Évite de rembourser la sortie tout en explorant |
Rend les requêtes de suivi insatisfaites après la première passe |
Bon sur les rampes sans copier les pipelines. |
