Mise en cache de métadonnées
Ce document décrit comment utiliser la mise en cache des métadonnées pour améliorer les performances des requêtes sur les tables d'objets et sur certains types de tables BigLake.
Les tables d'objets et certains types de tables BigLake peuvent mettre en cache des informations de métadonnées sur les fichiers situés dans des datastores externes, par exemple Cloud Storage. Les types de tables BigLake suivants sont compatibles avec la mise en cache des métadonnées :
- Tables Amazon S3 BigLake
- Tables BigLake Cloud Storage
Si vous n'activez pas la mise en cache des métadonnées, les requêtes effectuées sur la table doivent lire la source de données externe pour obtenir les métadonnées d'objet. La lecture de ces données augmente la latence des requêtes. Répertorier des millions de fichiers depuis la source de données externe peut prendre plusieurs minutes. Si vous activez la mise en cache des métadonnées, les requêtes peuvent éviter de répertorier les fichiers de la source de données externe et ainsi partitionner et supprimer les fichiers plus rapidement.
Vous pouvez activer la mise en cache des métadonnées sur une table BigLake ou une table d'objets lors de la création de la table. Pour en savoir plus sur la création de tables d'objets, consultez la page Créer des tables d'objets Cloud Storage. Pour plus d'informations sur la création de tables BigLake, consultez l'une des rubriques suivantes :Paramètres de mise en cache des métadonnées
Deux propriétés contrôlent cette fonctionnalité :
- L'obsolescence maximale spécifie le moment auquel les requêtes utilisent des métadonnées mises en cache..
- Le mode de cache des métadonnées spécifie la manière dont les métadonnées sont collectées.
Lorsque la mise en cache des métadonnées est activée, vous spécifiez l'intervalle maximal d'obsolescence des métadonnées acceptable pour les opérations sur la table. Par exemple, si vous spécifiez un intervalle d'une heure, les opérations sur la table utilisent les métadonnées mises en cache si celles-ci ont été actualisées au cours de la dernière heure. Si les métadonnées mises en cache sont plus anciennes, l'opération extrait les métadonnées du datastore (Amazon S3 ou Cloud Storage). Vous pouvez spécifier un intervalle d'obsolescence compris entre 30 minutes et sept jours.
Vous pouvez choisir d'actualiser le cache automatiquement ou manuellement :
- Pour les actualisations automatiques, le cache est actualisé à un intervalle défini par le système, généralement compris entre 30 et 60 minutes. L'actualisation automatique du cache est une bonne approche si les fichiers dans le datastore sont ajoutés, supprimés ou modifiés à intervalles irréguliers. Si vous devez contrôler le moment de l'actualisation, par exemple pour déclencher l'actualisation à la fin d'un job d'extraction, de transformation et de chargement, utilisez l'actualisation manuelle.
Pour les actualisations manuelles, exécutez la procédure système
BQ.REFRESH_EXTERNAL_METADATA_CACHE
afin d'actualiser le cache de métadonnées selon une programmation répondant à vos besoins. Pour les tables BigLake, vous pouvez actualiser les métadonnées de manière sélective en fournissant des sous-répertoires du répertoire de données de la table. Cela vous permet d'éviter le traitement inutile de métadonnées. L'actualisation manuelle du cache est une bonne approche si les fichiers dans le datastore sont ajoutés, supprimés ou modifiés à des intervalles connus, par exemple en tant que sortie d'un pipeline.Si vous émettez plusieurs actualisations manuelles simultanées, une seule réussira.
Le cache des métadonnées expire au bout de sept jours s'il n'est pas actualisé.
Les actualisations manuelles et automatiques du cache sont exécutées avec la priorité de requête INTERACTIVE
.
Si vous choisissez d'utiliser les actualisations automatiques, nous vous recommandons de créer une réservation, puis de créer une attribution avec un type de job BACKGROUND
pour le projet qui exécute les jobs d'actualisation du cache de métadonnées. Cela empêche les jobs d'actualisation d'être en concurrence avec les requêtes utilisateur pour les ressources et d'échouer potentiellement si les ressources sont insuffisantes.
Réfléchissez à la manière dont l'intervalle d'obsolescence et les valeurs du mode de mise en cache des métadonnées interagissent avant de les définir. Prenons les exemples suivants :
- Si vous actualisez manuellement le cache de métadonnées d'une table et que vous définissez l'intervalle d'obsolescence sur deux jours, vous devez exécuter la procédure système
BQ.REFRESH_EXTERNAL_METADATA_CACHE
tous les deux jours ou moins si vous souhaitez effectuer des opérations sur la table pour utiliser les métadonnées mises en cache. - Si vous actualisez automatiquement le cache de métadonnées d'une table et que vous définissez l'intervalle d'obsolescence sur 30 minutes, il est possible que certaines de vos opérations sur la table lisent les données du datastore si l'actualisation du cache de métadonnées s'approche de la durée maximum de la fenêtre habituelle de 30 à 60 minutes.
Obtenir des informations sur les jobs d'actualisation du cache de métadonnées
Pour trouver des informations sur les jobs d'actualisation des métadonnées, interrogez la vue INFORMATION_SCHEMA.JOBS
, comme illustré dans l'exemple suivant :
SELECT * FROM `region-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT` WHERE job_id LIKE '%metadata_cache_refresh%' AND creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 6 HOUR) ORDER BY start_time DESC LIMIT 10;
Utiliser des clés de chiffrement gérées par le client avec des métadonnées mises en cache
Les métadonnées mises en cache sont protégées par la clé de chiffrement gérée par le client (CMEK) utilisée pour la table à laquelle les métadonnées mises en cache sont associées. Il peut s'agir d'une clé CMEK appliquée directement à la table ou d'une clé CMEK dont la table hérite de l'ensemble de données ou du projet.
Si une clé CMEK par défaut est définie pour le projet ou l'ensemble de données, ou si la clé CMEK existante est modifiée pour le projet ou l'ensemble de données, cela n'affecte pas les tables existantes ni leurs métadonnées mises en cache. Vous devez modifier la clé de la table pour appliquer la nouvelle clé à la table et à ses métadonnées mises en cache.
Les clés CMEK créées dans BigQuery ne s'appliquent pas aux fichiers Cloud Storage utilisés par BigLake et les tables d'objets. Pour obtenir le chiffrement CMEK de bout en bout, configurez des clés CMEK dans Cloud Storage pour ces fichiers.
Obtenir des informations sur l'utilisation du cache de métadonnées par job de requête
Pour obtenir des informations sur l'utilisation du cache de métadonnées pour un job de requête, appelez la méthode jobs.get
pour ce job et examinez le champ MetadataCacheStatistics
dans la section JobStatistics2
de la ressource Job
. Ce champ indique quelles tables de métadonnées compatibles avec la requête ont été utilisées par la requête, si le cache de métadonnées a été utilisé par la requête et, si ce n'est pas le cas, la raison.
Statistiques des tables
Pour les tables BigLake basées sur des fichiers Parquet, les statistiques de table sont collectées lors de l'actualisation du cache de métadonnées. La collecte des statistiques de table se produit lors des actualisations automatiques et manuelles, et les statistiques sont conservées pendant la même période que le cache de métadonnées.
Les statistiques de table collectées incluent des informations sur les fichiers telles que le nombre de lignes, la taille des fichiers physiques et non compressés, et la cardinalité des colonnes. Lorsque vous exécutez une requête sur une table BigLake basée sur Parquet, ces statistiques sont fournies à l'optimiseur de requêtes afin d'améliorer la planification des requêtes et potentiellement d'améliorer les performances pour certains types de requêtes. Par exemple, une optimisation courante des requêtes est la propagation des contraintes dynamiques, où l'optimiseur de requête déduit de manière dynamique les prédicats sur les tables de faits plus grandes d'une jointure à partir des plus petites tables de dimensions. Bien que cette optimisation puisse accélérer les requêtes en utilisant des schémas de table normalisés, elle nécessite des statistiques de table précises. Les statistiques de table collectées par la mise en cache des métadonnées permettent d'optimiser les plans de requête à la fois dans BigQuery et Apache Spark.
Limites
Les limites suivantes s'appliquent au cache de métadonnées :
- Si vous émettez plusieurs actualisations manuelles simultanées, une seule réussira.
- Le cache des métadonnées expire au bout de sept jours s'il n'est pas actualisé.
- Si vous mettez à jour l'URI source d'une table, le cache de métadonnées n'est pas automatiquement actualisé, et les requêtes suivantes renvoient des données du cache obsolète. Pour éviter cela, actualisez manuellement le cache des métadonnées. Si le cache de métadonnées de la table est configuré pour s'actualiser automatiquement, vous devez définir le mode d'actualisation sur manuel, effectuer l'actualisation manuelle, puis définir à nouveau le mode d'actualisation de la table sur "Automatique".
Si vous actualisez manuellement le cache de métadonnées et que votre ensemble de données cible et votre bucket Cloud Storage se trouvent dans un emplacement régional, vous devez spécifier explicitement cet emplacement lorsque vous exécutez l'appel de procédure
BQ.REFRESH_EXTERNAL_METADATA_CACHE
. Pour ce faire, procédez de l'une des façons suivantes :Console
Accédez à la page BigQuery.
Sélectionnez un onglet dans l'éditeur.
Cliquez sur
Plus, puis sur Paramètres de requête.Dans la section Options avancées, décochez la case Sélection automatique de l'emplacement, puis spécifiez la région cible.
Cliquez sur Enregistrer.
Exécutez la requête contenant l'appel de procédure
BQ.REFRESH_EXTERNAL_METADATA_CACHE
dans cet onglet d'éditeur.
bq
Si vous exécutez la requête contenant l'appel de procédure
BQ.REFRESH_EXTERNAL_METADATA_CACHE
à l'aide debq query
, assurez-vous de spécifier l'option--location
.
Étapes suivantes
- Découvrez comment créer des tables BigLake Cloud Storage avec mise en cache des métadonnées.
- Découvrez comment créer des tables BigLake Amazon S3 avec mise en cache des métadonnées.
- Découvrez comment créer des tables d'objet avec la mise en cache de métadonnées.
- Découvrez comment utiliser les vues matérialisées via des tables compatibles avec le cache des métadonnées BigLake.