Utiliser Lake Cache pour améliorer les performances des tables externes
Lake Cache dans Oracle Autonomous AI Database vous permet de mettre en cache les données fréquemment consultées à partir de tables externes de votre base de données.
Le cache de lac est uniquement pris en charge pour Oracle AI Database 26ai.
- A propos du cache de lac dans une base de données d'IA autonome
Un cache de lac 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 lac
Fournit des exemples pour vous aider à commencer à créer et à remplir des caches de lac. - Choix de 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 du cache et l'allocation de taille pour les tables externes. - Prérequis pour la création du cache de lac
Répertorie les prérequis pour la création du cache de lac. - Utilisation de la mise en cache basée sur des stratégies pour les tables externes
Décrit comment utiliser la mise en cache basée sur des stratégies pour les tables externes dans la base de données Autonomous AI. - Utilisation de la mise en cache automatique pour la table externe
Décrit comment utiliser la mise en cache automatique pour les tables externes dans la base de données Autonomous AI. - Surveillance et diagnostic des performances du cache de lac
La base de données AI autonome fournit des vues qui vous permettent de surveiller le cache de lac. - Cas d'emploi pour la mise en cache de lac
Décrit les scénarios courants dans lesquels la mise en cache de tables externes est bénéfique.
Rubrique parent : Lakehouse
A propos de Lake Cache dans la base de données Autonomous AI
Un cache de lac est une zone de stockage de votre base de données Autonomous AI 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 des données en dehors de la base. Les requêtes sur les tables externes ne seront pas aussi rapides que les requêtes 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 la banque d'objets.
Lake Cache vous permet de stocker localement les données externes fréquemment consultées. Lorsque vous utilisez le cache, les requêtes sur les tables externes peuvent extraire des données directement à partir de la base de données d'IA autonome, ce qui les rend beaucoup plus rapides. Vous n'avez pas besoin de modifier les instructions SQL ou les workflows existants pour bénéficier d'un accès plus rapide, car ce mécanisme de mise en cache est entièrement transparent pour les applications. Vous pouvez créer Lake Cache pour les tables externes partitionnées et non partitionnées créées sur les tables Parquet, ORC, AVRO, CSV et Iceberg.
-
Performances améliorées pour les analyses : les requêtes sont plusieurs fois plus rapides pour vos 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 cache est entièrement transparent. Les applications peuvent bénéficier d'une vitesse améliorée sans nécessiter de modification de leurs requêtes, tableaux de bord ou applications.
-
Réduction des coûts liés au cloud : dans une application multicloud, la mise en cache réduit la nécessité d'extraire des données externes répétées à partir du stockage distant, réduisant ainsi les frais de sortie de données associés à l'accès aux données entre les régions ou les clouds.
-
Contrôle de mise en cache flexible et détaillé : vous pouvez mettre en 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 lac.
Les caches de lac de votre base de données peuvent être gérés automatiquement ou via des 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 remplir, actualiser et retirer des fichiers du cache, ce qui vous permet de contrôler précisément le contenu et la maintenance du cache.
Pour plus d'informations, reportez-vous à Requête de données externes.
Démarrage rapide avec Lake Caches
Fournit des exemples pour vous aider à démarrer la création et le remplissage des caches du lac.
Créez un cache de lac basé sur une stratégie 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 le cache de lac pour votre schéma. Par exemple :BEGIN
DBMS_EXT_TABLE_CACHE.CREATE_CACHE (
owner => 'SALES',
table_name => 'STORE_SALES',
partition_type => 'PATH');
END;
/
Cela crée un cache pour la table STORE_SALES dans le schéma SALES. STORE_SALES est une table externe pointant vers les données stockées dans la banque d'objets.
Le paramètre owner indique le nom du schéma. Cet exemple crée un cache de lac pour l'utilisateur SALES.
partition_type contrôle la façon dont le cache est fractionné. Avec 'PATH', le cache est partitionné par le chemin de dossier de chaque fichier source. FILE$PATH est une colonne masquée qui stocke ce chemin de 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 du cache. Par exemple :SELECT external_table_name, cached, disabled
FROM user_external_tab_caches;DBMS_EXT_TABLE_CACHE.VALIDATE pour valider un cache de lac. Une erreur est signalée si la table externe référencée est introuvable dans la base de données. Par 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 remplir une table entière dans le cache. Par exemple :
BEGIN
DBMS_EXT_TABLE_CACHE.ADD_TABLE (
owner => 'SALES',
table_name => 'STORE_SALES');
END;
/Cet exemple tente de remplir la table STORE_SALES dans le cache.
Créer des caches de lac gérés automatiquement
Par défaut, la mise en cache automatique est désactivée. Les caches AUTO sont automatiquement créés lorsque vous activez la mise en cache automatique.
DBMS_CACHE.SET_USER_PROPERTY pour activer la mise en cache automatique de la table externe pour le schéma HR. Par exemple : BEGIN
DBMS_CACHE.SET_USER_PROPERTY (
property_name => 'max_cache_size',
property_value_num => 10737418240);
END;
/Cet exemple active la mise en cache automatique pour le schéma HR et définit le paramètre MAX_CACHE_SIZE sur 10737418240 octets, en indiquant une allocation de cache maximale de 10 Go pour les tables externes dans le 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 cache par défaut pour tous les utilisateurs. Lorsque vous définissez MAX_CACHE_PERCENT sur 20, la mise en cache automatique des tables externes peut utiliser jusqu'à 20 % du quota de tablespace affecté à chaque utilisateur (par exemple, un utilisateur avec un quota de 100 Go peut mettre en 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 par utilisateur, et non une 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 à la demande pour tous les caches d'un utilisateur donné. Par exemple :BEGIN
DBMS_CACHE.REFRESH (
owner => 'HR',
refresh_type => 'ALL');
END;
/Cet exemple met à jour les caches existants et crée des caches de lac pour le schéma HR, si nécessaire. La propriété refresh_type indique la portée à laquelle l'actualisation est effectuée.
Choisir votre préférence de mise en cache
Lake Cache est créé en tant qu'objet de schéma dans la base de données. L'espace physique alloué est semblable à celui des tables et des index stockés dans les fichiers de données. Lorsque vous créez un cache de lac, une table est créée dans votre schéma et toutes les limites de quota d'espace définies pour votre schéma s'appliquent également au cache de lac.
-
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 mis hors service.
-
Fournit un contrôle détaillé du contenu et du cycle de vie du cache.
-
Convient lorsque le comportement de mise en cache prévisible ou personnalisé est requis.
-
-
Gestion automatique du cache
-
La base de données crée, alimente, actualise et supprime automatiquement les caches.
-
Les actions sont pilotées par des modèles de requête de table externe et 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érequis pour la création du cache de lac
Répertorie les prérequis pour créer le cache de lac.
-
Vous pouvez uniquement créer un cache de lac dans votre propre schéma et pour les tables externes dont vous êtes propriétaire.
-
Un quota d'espace approprié doit être alloué à votre schéma pour garantir une capacité de stockage suffisante pour les données de cache.
-
Vous devez disposer d'informations d'identification pour accéder aux fichiers de table externes stockés dans la banque d'objets. Vous n'avez pas besoin de créer d'informations d'identification si vous activez les informations d'identification de principal de ressource pour accéder à la banque d'objets Oracle Cloud Infrastructure.
Utiliser la mise en cache basée sur une stratégie pour les tables externes
Explique comment utiliser la mise en cache basée sur des stratégies pour les tables externes dans la base de données Autonomous AI.
La mise en cache basée sur des stratégies permet de contrôler explicitement la manière dont les données externes sont mises en cache, actualisées et gérées dans la base. Dans cette approche, vous définissez des stratégies de mise en cache et gérez l'ensemble du cycle de vie du cache à l'aide des procédures PL/SQL disponibles dans le package 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 le remplissage de caches, la suppression de fichiers du cache et l'activation ou la désactivation des caches.
Cette approche permet un contrôle détaillé du comportement du cache. Vous pouvez indiquer les fichiers de table externe ou le pourcentage de données de table externe à mettre en mémoire cache, ce qui garantit une utilisation optimale de l'espace de cache en fonction des exigences de charge globale. Les procédures telles que ADD_BY_LIKE et ADD_LATEST_FILES vous permettent de filtrer et de remplir les fichiers dans le 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 du cache.
Comme les caches basés sur une stratégie ne sont pas gérés par un algorithme d'expulsion automatique, la base de données ne les supprime pas automatiquement sous la pression de l'espace. Si l'espace cache devient indisponible, les nouveaux fichiers risquent de ne pas pouvoir être remplis 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, reportez-vous à Package DBMS_EXT_TABLE_CACHE.
Le diagramme suivant décrit les étapes de gestion des caches basés sur une stratégie à l'aide du package DBMS_EXT_TABLE_CACHE. Il comprend des étapes clés telles que la création, l'alimentation et la suppression du cache.
Sujets
- Remplissage de fichiers dans le cache de lac
Décrit comment remplir le cache basé sur une stratégie créé précédemment. - Drop Files from Lake Cache
Affiche des exemples de suppression de fichiers de Lake Cache. - Désactiver et activer le cache de lac
Affiche des exemples pour le désactiver et l'activer. - Drop Lake Cache
Affiche un exemple de suppression de Lake Cache. - Définition de préférences de dimensionnement facultatives pour les caches basés sur une stratégie
Décrit comment définir des préférences de dimensionnement pour les caches de lac basés sur une stratégie dans la base de données Autonomous AI.
Remplir les fichiers dans le cache du lac
Explique comment alimenter le cache basé sur une stratégie créé précédemment.
Une fois que vous avez créé un cache, vous pouvez l'alimenter. Le remplissage des fichiers charge le contenu des fichiers de table externes spécifiés dans le cache. Vous pouvez choisir de remplir tous les fichiers d'une table, un pourcentage spécifique de la table, ou spécifier une condition de filtre pour limiter les fichiers que vous souhaitez remplir. Par exemple, vous pouvez filtrer les fichiers en fonction de leur nom ou d'une plage de dates.
-
En fonction du quota d'espace alloué au schéma, Oracle tente d'alimenter les fichiers dans le cache. Si la limite de quota affectée est atteinte, Oracle arrête de remplir les fichiers, sauf si l'espace requis est alloué.
-
Le cache de lac n'est pas actualisé automatiquement. Pour mettre à jour le cache lorsqu'un fichier de la banque d'objets est modifié, vous devez remplir à nouveau le fichier.
-
Lorsqu'un fichier est supprimé de la banque d'objets, les données mises en cache correspondantes deviennent immédiatement non valides et ne peuvent pas être extraites.
Ajouter une table au cache de lac
Utilisez DBMS_EXT_TABLE_CACHE.ADD_TABLE pour remplir une table entière ou un certain pourcentage de la table externe dans le cache.
Exemples
BEGIN
DBMS_EXT_TABLE_CACHE.ADD_TABLE (
owner => 'SALES',
table_name => 'STORE_SALES');
END;
/Cet exemple tente de remplir la table STORE_SALES dans le cache, en ignorant tous les fichiers existants qui ont déjà été remplis.
BEGIN
DBMS_EXT_TABLE_CACHE.ADD_TABLE (
owner => 'SALES',
table_name => 'STORE_SALES',
percent_files => 80);
END;
/Cet exemple tente de remplir 80 % de la table STORE_SALES dans le cache, en ignorant tous les fichiers existants qui ont déjà été remplis.
Le paramètre percent_files est facultatif. Si vous n'indiquez pas ce paramètre, la table entière est alimentée dans le cache.
Pour plus d'informations, reportez-vous à Procédure ADD_TABLE.
Ajouter des fichiers au cache de lac
-
ADD_FILE: pour ajouter un fichier unique dans le cache. -
ADD_BY_LIKE: pour ajouter des fichiers spécifiés en fonction des filtres de chemin indiqués. -
ADD_LATEST_FILES: pour ajouter des fichiers en fonction de l'intervalle de temps indiqué.
Exemples
DBMS_EXT_TABLE_CACHE.ADD_FILE pour remplir un seul fichier dans le cache de lac. Par 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 renseigne les données du fichier salesdata.parquet dans le 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 le dernier cache du fichier.
Pour plus d'informations, reportez-vous à Procédure ADD_FILE.
DBMS_EXT_TABLE_CACHE.ADD_BY_LIKE pour remplir un ou plusieurs fichiers dans le cache de lac. Par 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 remplit tous les fichiers avec des noms commençant par sales ou customer, tout en excluant les fichiers déjà remplis.
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 renseigne les fichiers sales_data1.parquet et sales_data2.parquet dans le cache.
Dans cet exemple, le caractère '#' est défini comme 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 caractère unique.
Pour plus d'informations, reportez-vous à Procédure ADD_BY_LIKE.
DBMS_EXT_TABLE_CACHE.ADD_LATEST_FILES pour remplir un ou plusieurs fichiers en fonction de la date de dernière modification dans le cache de lac. Par 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 indique l'intervalle de temps. Seuls les fichiers modifiés au cours des sept (7) derniers jours peuvent être renseignés dans le cache.
Le paramètre max_files limite le nombre de fichiers pouvant être renseignés dans le cache. Cet exemple ne renseigne que cinq (5) fichiers.
Le paramètre force force l'écrasement des fichiers indiqués dans le cache même s'ils n'ont pas été modifiés.
Pour plus d'informations, reportez-vous à Procédure ADD_LATEST_FILES.
Supprimer des fichiers du cache du lac
Affiche des exemples de suppression de fichiers à partir de Lake Cache.
Effacer le cache du lac
Utilisez DBMS_EXT_TABLE_CACHE.CLEAR pour supprimer tous les fichiers du cache de lac. Par exemple :
BEGIN
DBMS_EXT_TABLE_CACHE.CLEAR (
owner => 'SALES',
table_name => 'STORE_SALES');
END;
/Cet exemple supprime tous les fichiers du cache STORE_SALES et libère tout l'espace utilisé par les fichiers supprimés.
Pour plus d'informations, reportez-vous à la section Procédure CLEAR.
Supprimer des fichiers du cache du lac
-
DROP_FILE: permet de supprimer un seul fichier du cache. -
DROP_BY_LIKE: permet de supprimer des fichiers du cache en fonction des filtres de chemin indiqués. -
RETIRE_FILES: permet de supprimer des fichiers du cache en fonction de l'intervalle indiqué.
Exemples
Utilisez DBMS_EXT_TABLE_CACHE.DROP_FILE pour supprimer un fichier du cache de lac. Par 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 du cache et libère tout l'espace utilisé par le fichier supprimé.
Pour plus d'informations, reportez-vous à Procédure DROP_FILE.
Utilisez DBMS_EXT_TABLE_CACHE.DROP_BY_LIKE pour supprimer des fichiers en fonction du paramètre path_filters. Par 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 du 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 du cache et libère tout l'espace utilisé par les fichiers supprimés.
Dans cet exemple, le caractère '#' est défini comme 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 caractère unique.
Pour plus d'informations, reportez-vous à Procédure DROP_BY_LIKE.
Utilisez DBMS_EXT_TABLE_CACHE.RETIRE_FILES pour supprimer des fichiers en fonction de l'intervalle indiqué. Par 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, reportez-vous à Procédure RETIRE_FILES.
Les exemples ci-dessus suppriment un ou plusieurs fichiers du cache tout en conservant le cache. Si nécessaire, vous pouvez charger à nouveau les fichiers dans le cache. Pour plus d'informations, reportez-vous à Alimentation de fichiers dans le cache de lac.
Désactivation et activation du cache de lac
Présente des exemples de désactivation et d'activation du cache de lac.
Exécutez DBMS_EXT_TABLE_CACHE.DISABLE pour désactiver Lake Cache à partir de la base de données. La désactivation d'un cache ne supprime pas les données du cache. Au lieu de cela, le cache est marqué comme DISABLED et l'optimiseur ne peut pas utiliser le cache pour les réécritures de requête.
Exemple
BEGIN
DBMS_EXT_TABLE_CACHE.DISABLE (
owner => 'SALES',
table_name => 'STORE_SALES');
END;
/Cet exemple désactive le cache STORE_SALES.
Pour plus d'informations, reportez-vous à Procédure DISABLE.
Une fois que vous avez désactivé un cache de lac, utilisez DBMS_EXT_TABLE_CACHE.ENABLE pour l'activer.
BEGIN
DBMS_EXT_TABLE_CACHE.ENABLE (
owner => 'SALES',
table_name => 'STORE_SALES'
);
END;
/Cet exemple active le cache STORE_SALES.
Pour plus d'informations, reportez-vous à Procédure ACTIVABLE.
Supprimer le cache de lac
Affiche un exemple de suppression du cache de lac.
Exécutez DBMS_EXT_TABLE_CACHE.DROP_CACHE pour supprimer un cache de lac. La procédure DBMS_EXT_TABLE_CACHE.DROP_CACHE enlève le cache de lac indiqué de la base de données et libère l'espace de stockage associé au cache.
Exemple :
BEGIN
DBMS_EXT_TABLE_CACHE.DROP_CACHE (
owner => 'SALES',
table_name => 'STORE_SALES');
END;
/Cet exemple supprime le cache STORE_SALES du schéma SALES.
La suppression d'un cache enlève ses métadonnées du dictionnaire de données et supprime toutes ses données en cache.
Pour plus d'informations, reportez-vous à Procédure DROP_CACHE.
USER_EXTERNAL_TAB_CACHES pour vérifier que le cache a été supprimé. Par exemple :SELECT external_table_name, cached
FROM user_external_tab_caches;Pour plus d'informations, reportez-vous à Vues DBA_EXTERNAL_TAB_CACHES et USER_EXTERNAL_TAB_CACHES.
Définition de préférences de dimensionnement facultatives pour les caches basés sur une stratégie
Explique comment définir des préférences de dimensionnement pour les caches de lac basés sur une stratégie dans Autonomous AI Database.
Par défaut, le cache de lac est désactivé pour un utilisateur. Pour activer et créer le cache de lac, utilisez la procédure DBMS_EXT_TABLE_CACHE.CREATE_CACHE. Le cache est créé dans le schéma par défaut et hérite des limites de quota d'espace définies pour le 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 Lake Cache. 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 indique la taille totale du cache externe en octets. La propriété MAX_CACHE_PERCENT indique la taille totale du cache externe en 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 définit la préférence de mise en cache sur MAX_CACHE_PERCENT pour le schéma SALES.
property_value est égal à 50 %, ce qui indique que le quota d'espace de cache pour le schéma SALES correspond au maximum à 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 définit la préférence de mise en cache sur MAX_CACHE_SIZE pour le schéma SALES.
property_value est 5368709120, ce qui indique que la taille maximale du cache pour le schéma SALES est de 5 Go maximum.
Pour plus d'informations, reportez-vous à 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 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 FonctionGET_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_PERCENTest prioritaire 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_SIZEest prioritaire. -
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 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 cache est défini par défaut surUNLIMITED.
Pour surveiller l'utilisation de l'espace de cache, interrogez la colonne
CACHE_CUR_SIZE dans les vues ALL_EXTERNAL_TAB_CACHES. Pour plus d'informations, reportez-vous à Vues DBA_EXTERNAL_TAB_CACHES et USER_EXTERNAL_TAB_CACHES.
Utiliser la mise en cache automatique pour la table externe
Explique comment utiliser la mise en cache automatique pour les tables externes dans la base de données Autonomous AI.
Lorsque vous activez la mise en cache automatique pour votre base de données, celle-ci gère automatiquement l'intégralité du cycle de vie du cache, y compris la création, l'alimentation, l'actualisation et la suppression, sans intervention de votre part. Oracle utilise des mécanismes internes pour déterminer quelles tables externes peuvent bénéficier de la mise en 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 la surcharge liée à la gestion du cache, car l'utilisation du cache est surveillée en permanence, ce qui garantit que les données de table externe fréquemment consultées restent disponibles dans le cache pour améliorer les temps de réponse aux requêtes.
Par défaut, la mise en cache automatique n'est pas activée dans la base de données. Pour l'activer, vous devez définir la taille du cache sur une valeur différente de zéro à l'aide de procédures telles que DBMS_CACHE.SET_USER_PROPERTY fournies dans le package DBMS_CACHE. Vous pouvez configurer la mise en cache automatique pour un utilisateur spécifique ou comme paramètre par défaut pour tous les utilisateurs de base de données, selon vos besoins.
Lorsque la mise en cache automatique des tables externes est activée, Oracle crée des caches de lac marqués comme AUTO et alimente le cache de toutes les données correspondantes d'une table externe si le quota le permet. Les caches AUTO sont actualisés automatiquement selon une planification régulière. Toutefois, vous pouvez également utiliser les procédures DBMS_CACHE.REFRESH ou DBMS_CACHE.CLEAR pour actualiser ou supprimer vos caches, respectivement.
Oracle gère les caches AUTO à l'aide d'un algorithme d'expulsion similaire à LRU (Least Recent Used). Lorsque l'espace est insuffisant, les caches auxquels vous avez accédé le plus récemment sont automatiquement supprimés au cours du cycle d'actualisation pour libérer l'espace de stockage.
Sujets
- Activation de la mise en cache automatique pour les tables externes
Décrit comment configurer les propriétés de mise en cache automatique. - Actualisation des caches de lac
Affiche un exemple d'actualisation des caches AUTO pour le schéma indiqué. - Drop Lake Caches
Affiche un exemple de suppression des caches AUTO pour le schéma indiqué.
Activer la mise en cache automatique pour les tables externes
Explique comment configurer les propriétés de mise en cache automatique.
Par défaut, la mise en cache automatique est désactivée. Vous pouvez activer la mise en cache automatique pour vos tables externes de manière globale pour tous les utilisateurs de 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 caches de lac. 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 une stratégie.
Vous utilisez DBMS_CACHE.SET_GLOBAL_PROPERTY ou DBMS_CACHE.SET_USER_PROPERTY pour définir les propriétés de mise en cache AUTO, y compris les propriétés permettant d'activer la mise en cache automatique globalement ou pour un utilisateur spécifié, respectivement. Les préférences de mise en cache au niveau de l'utilisateur sont prioritaires sur les préférences globales de mise en cache. Utilisez les paramètres PROPERTY_NAME et PROPERTY_VALUE de ces procédures pour définir des limites de quota d'espace pour les caches de lac.
En fonction du 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 de remplissage é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 cache, interrogez la colonne
CACHE_CUR_SIZE dans les vues ALL_EXTERNAL_TAB_CACHES. Pour plus d'informations, reportez-vous à Vues DBA_EXTERNAL_TAB_CACHES et USER_EXTERNAL_TAB_CACHES.
Rubrique parent : Utiliser la mise en cache automatique pour la table externe
Caches rafraîchissantes du lac
Affiche un exemple d'actualisation des caches AUTO pour le schéma spécifié.
-
Ajoutez de nouveaux caches.
-
Supprimez tous 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).
-
Mettez à jour ou remplissez à nouveau les caches existants.
-
Supprimez les caches les moins récemment consultés lorsque l'espace est insuffisant.
Vous pouvez également utiliser la procédure DBMS_CACHE.REFRESH pour effectuer une actualisation à la demande de tous les caches de l'utilisateur HR.
Rubrique parent : Utiliser la mise en cache automatique pour la table externe
Caches de Drop Lake
Affiche un exemple de suppression des caches AUTO pour le schéma spécifié.
A chaque cycle d'actualisation, les caches non valides et les caches les moins récemment consultés 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 donné.
Rubrique parent : Utiliser la mise en cache automatique pour la table externe
Surveiller et diagnostiquer les performances du cache Lake
Autonomous AI Database fournit des vues qui vous permettent de surveiller le cache de lac.
| Afficher | Description |
|---|---|
|
Fournit des informations sur tous les caches de lac de la base de données ou sur les caches de lac d'un utilisateur. |
|
|
Fournit des informations sur les fichiers du stockage cloud accessibles à l'utilisateur en cours et appartenant à des tables externes mises en cache. |
|
|
Fournit des informations sur les fichiers du stockage cloud détenus par l'utilisateur en cours 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 des tables externes sont stockées, consultées et gérées dans la base de données. Ces vues 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 requêtes. En surveillant ces vues, vous pouvez détecter quand les caches doivent être actualisés, vérifier que la taille du cache respecte les limites configurées et diagnostiquer les goulets d'étranglement de performances 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;La requête 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 de la mise en cache des lacs
Décrit les scénarios courants dans lesquels la mise en cache de tables externes présente des avantages.
| Cas d'emploi | Eléments à mettre en cache | Impact sur les coûts | Impact sur les performances | Remarques |
|---|---|---|---|---|
|
Tableaux de bord ou BI interactifs sur des tables externes |
Tables ou partitions externes fréquemment interrogées alimentant des tableaux de bord |
Élimine les lectures inter-clouds ou régionales répétées |
Conserve les données à chaud en local pour des temps de réponse plus rapides et cohérents et évite les démarrages à froid |
Il s'agit du scénario le plus courant |
|
Analyses multicloud (par exemple, base de données d'IA autonome sur OCI lisant S3, GCS ou Azure) |
Jeux de données à chaud accessibles à partir de banques d'objets non OCI |
Réduction de la sortie du cloud croisé et réduction des frais de demande des fournisseurs |
Supprime les E/S distantes et la latence réseau |
Réduction des coûts et de la latence |
|
Accès inter-région (même cloud) |
Données externes dans une autre région |
Evite la sortie inter-région lors des analyses répétées |
Réduit la latence en localisant les lectures |
Même logique que le multicloud. |
|
Actualisation de la vue matérialisée sur les données externes |
Tables externes source pour les vues matérialisées |
Réduit la sortie pour les actualisations programmées |
Stabilise et accélère l'actualisation de la vue matérialisée ; réduit le temps d'analyse à distance |
Idéal pour les agrégats proches du temps réel |
|
Derniers pipelines de fichiers (zone d'accueil) |
|
Les dernières données sont toujours chaudes |
||
|
Données de référence ou de recherche petites mais fréquemment jointes |
Tables externes de petite taille utilisées dans les jointures |
Empêche la surcharge due à de nombreuses petites demandes |
Conserve les données de recherche locales pour les jointures |
Les données des petits dictionnaires sont toujours à jour, sans qu'il soit nécessaire de gérer des processus ETL complexes |
|
Science des données et ingénierie des fonctionnalités |
Formation réutilisée ou jeux de fonctionnalité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 pilotées par ordinateur portable |
|
Stockage d'objets saturé ou limité |
Toute table externe à fort trafic |
Moins de tentatives pour de nombreux utilisateurs |
Protège les requêtes de l'ajustement du stockage et du débit variable |
Améliore la prévisibilité des SLA |
|
Iceberg ou grands lacs cloisonnés |
Partitions ou instantanés à chaud lus fréquemment |
Evite les lectures répétées des mêmes bandes de parquet |
Localise les pages de données pour les partitions à chaud ; des temps de requête plus réguliers |
Lien croisé vers la page de configuration Iceberg |
|
Exploration ad hoc à grande échelle |
Tables externes provisoires avec accès répété |
Évite de rembourser la sortie tout en explorant |
Rend les requêtes de suivi accrocheuses après le premier passage |
Bon sur les rampes sans copier les pipelines. |
