Utiliser le cache de table externe pour améliorer les performances des tables externes
Le cache de table externe dans Oracle Autonomous 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 table externe est uniquement pris en charge pour Oracle Database 23ai.
- A propos du cache de table externe dans Autonomous Database
Un cache de table externe est une zone de stockage dans votre instance Autonomous Database qui stocke les données d'une table externe. - Prérequis pour la création d'un cache de table externe
Répertorie les prérequis pour la création du cache de table externe. - Création et gestion du cache de table externe dans Autonomous Database
A l'aide du cache de table externe, vous pouvez mettre en cache les données des tables externes dans votre base de données. - Définition de préférences de dimensionnement facultatives pour le cache de table externe
Vous pouvez utiliser la procédureDBMS_EXT_TABLE_CACHE.SET_USER_PROPERTY
pour définir des préférences de dimensionnement et des limites de quota d'espace sur le cache de table externe. - Notes sur le cache de table externe
Répertorie les remarques et restrictions importantes concernant l'utilisation du cache de table externe dans une instance Autonomous Database.
Rubrique parent : Fonctionnalités
A propos du cache de table externe dans Autonomous Database
Un cache de table externe est une zone de stockage dans votre instance Autonomous 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 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.
La fonctionnalité de cache de table externe vous permet de mettre en cache les données fréquemment consultées à partir de tables externes dans votre instance Autonomous Database, sans avoir à apporter de modifications aux applications qui accèdent aux données, ce qui permet d'accéder plus rapidement aux tables externes.
-
Performances améliorées : 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.
-
Parquet
-
ORC
-
AVRO
-
Tables d'iceberg
Pour plus d'informations, reportez-vous à Requête de données externes.
Prérequis pour la création d'un cache de table externe
Répertorie les prérequis pour la création du cache de table externe.
-
Vous devez disposer du privilège
EXECUTE
sur le packageDBMS_EXT_TABLE_CACHE
. Notez que 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 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.
Création et gestion du cache de table externe dans Autonomous Database
A l'aide du cache de table externe, vous pouvez mettre en cache les données des tables externes de la base.
Le cache de table externe 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 table externe, une table est créée dans votre schéma. Toutes les limites de quota d'espace définies pour votre schéma s'appliquent également au cache de table externe.
- Créer un cache de table externe
ExécutezDBMS_EXT_TABLE_CACHE.CREATE_CACHE
pour créer un cache de table externe. - Remplissage de fichiers dans le cache de table externe
Affiche des exemples de remplissage de fichiers dans le cache de table externe. - Suppression de fichiers du cache de table externe
Affiche des exemples de suppression de fichiers du cache de table externe. - Désactiver et activer le cache de table externe
Affiche des exemples pour désactiver et activer le cache de table externe. - Suppression du cache de table externe
Affiche un exemple de suppression du cache de table externe. - Visualisation des informations de cache de table externe
Autonomous Database fournit des vues qui vous permettent de surveiller le cache de table externe.
Créer un cache de table externe
Exécutez DBMS_EXT_TABLE_CACHE.CREATE_CACHE
pour créer un cache de table externe.
Lorsque la mémoire cache est créée, elle est initialement vide et activée 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. Pour plus d'informations, reportez-vous à Définition de préférences de dimensionnement facultatives pour le cache de table externe.
Rubrique parent : Création et gestion du cache de table externe dans Autonomous Database
Renseigner les fichiers dans le cache de table externe
Affiche des exemples de remplissage de fichiers dans le cache de table externe.
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 table externe 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 table externe
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 table externe
-
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 fichier unique dans le cache de table externe. 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 table externe. 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/salesdata.parquet",
"https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/salesdata1.parquet"]'
);
END;
/
Cet exemple renseigne les données des fichiers salesdata.parquet
et salesdata1.parquet
dans le cache, en ignorant les fichiers existants déjà renseigné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 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 table externe. 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.
Rubrique parent : Création et gestion du cache de table externe dans Autonomous Database
Supprimer des fichiers du cache de table externe
Affiche des exemples de suppression de fichiers du cache de table externe.
Effacer le cache de table externe
Utilisez DBMS_EXT_TABLE_CACHE.CLEAR
pour supprimer tous les fichiers du cache de table externe. 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 de table externe
-
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 table externe. 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#_data1.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 table externe.
Rubrique parent : Création et gestion du cache de table externe dans Autonomous Database
Désactivation et activation du cache de table externe
Affiche des exemples de désactivation et d'activation du cache de table externe.
Exécutez DBMS_EXT_TABLE_CACHE.DISABLE
pour désactiver le cache de table externe 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 table externe, 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.
Rubrique parent : Création et gestion du cache de table externe dans Autonomous Database
Supprimer le cache de table externe
Affiche un exemple de suppression du cache de table externe.
Exécutez DBMS_EXT_TABLE_CACHE.DROP_CACHE
pour supprimer un cache de table externe. La procédure DBMS_EXT_TABLE_CACHE.DROP_CACHE
supprime le cache de table externe 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 aux vues DBA_EXTERNAL_TAB_CACHES et USER_EXTERNAL_TAB_CACHES.
Rubrique parent : Création et gestion du cache de table externe dans Autonomous Database
Afficher les informations de cache de table externe
Autonomous Database fournit des vues qui vous permettent de surveiller le cache de table externe.
Visualiser | Description |
---|---|
Vues DBA_EXTERNAL_TAB_CACHES et USER_EXTERNAL_TAB_CACHES |
Fournit des informations sur tous les caches de table externe de la base de données ou sur les caches de table externe 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 |
Rubrique parent : Création et gestion du cache de table externe dans Autonomous Database
Définir les préférences de dimensionnement facultatives pour le cache de table externe
Vous pouvez utiliser la procédure DBMS_EXT_TABLE_CACHE.SET_USER_PROPERTY
pour définir des préférences de dimensionnement et des limites de quota d'espace sur le cache de table externe.
Par défaut, le cache de table externe est désactivé pour un utilisateur. Pour activer et créer le cache de table externe, 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 le 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
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é.
-
Lorsque
MAX_CACHE_SIZE
,MAX_CACHE_PERCENT
et le quota d'espace sont définis,MAX_CACHE_PERCENT
est prioritaire surMAX_CACHE_SIZE
. -
Lorsque seul
MAX_CACHE_SIZE
est défini et queMAX_CACHE_PERCENT
ou le quota d'espace n'est pas défini,MAX_CACHE_SIZE
est prioritaire. -
Lorsque seul le quota d'espace est défini et que
MAX_CACHE_SIZE
etMAX_CACHE_PERCENT
ne 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_PERCENT
ou le quota d'espace n'est pas défini, le quota d'espace de cache est défini par défaut surUNLIMITED
.
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, reportez-vous à Fonction GET_USER_PROPERTY.
Notes de cache de table externe
Répertorie les remarques et restrictions importantes relatives à l'utilisation du cache de table externe dans une instance Autonomous Database.
-
Vous pouvez uniquement créer un cache de table externe dans votre propre schéma et pour les tables externes dont vous êtes propriétaire.
-
Un cache de table externe ne peut contenir que des fichiers provenant d'une seule table externe.
-
Vous ne pouvez pas accorder de privilèges sur un cache de table externe et vous pouvez uniquement accéder aux données du cache de table externe dont vous êtes propriétaire.
-
Lorsqu'un fichier est supprimé de la banque d'objets, les données correspondantes dans le cache sont marquées comme non valides et ne sont pas accessibles.