Indexation des métadonnées pour les tables BigQuery
BigQuery indexe automatiquement les métadonnées des colonnes pour les tables BigQuery de plus de 1 Gio et utilise cet index pour accélérer vos requêtes. Les métadonnées incluent les emplacements des fichiers, les informations de partitionnement et les attributs au niveau des colonnes. Par défaut, l'indexation est une opération en arrière-plan sans frais, mais l'actualisation de l'index dépend des ressources disponibles sans frais et n'a pas d'objectifs de niveau de service (SLO) de performances.
Si la fraîcheur de l'index est essentielle pour votre charge de travail, vous pouvez allouer des ressources dédiées en configurant une réservation BACKGROUND.
Ce document explique comment surveiller l'actualisation et l'utilisation des index, configurer des ressources d'indexation dédiées et configurer des alertes d'indexation.
Afficher l'heure d'actualisation de l'index de métadonnées
Pour afficher la dernière actualisation de l'index de métadonnées d'une table, interrogez la colonne LAST_METADATA_INDEX_REFRESH_TIME de la vue INFORMATION_SCHEMA.TABLE_STORAGE.
Pour ce faire, procédez comme suit :
Dans la console Cloud de Confiance , accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
SELECT project_id, project_number, table_name, last_metadata_index_refresh_time FROM [
PROJECT_ID.]region-REGION.INFORMATION_SCHEMA.TABLE_STORAGE;Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet Cloud de Confiance by S3NS . Si non spécifié, le projet par défaut est utilisé.REGION: région où se trouve le projet, par exempleregion-us.
Cliquez sur Exécuter.
Afficher l'utilisation de l'index des métadonnées de colonne
Pour savoir si l'index des métadonnées de colonne a été utilisé une fois un job terminé, vérifiez la propriété TableMetadataCacheUsage de la ressource Job. Si le champ unusedReason est vide (non renseigné), l'index de métadonnées de la colonne a été utilisé. S'il est renseigné, le champ explanation associé indique pourquoi l'index de métadonnées de colonne n'a pas été utilisé.
Vous pouvez également afficher l'utilisation de l'index de métadonnées de colonne avec le champ metadata_cache_statistics dans la vue INFORMATION_SCHEMA.JOBS.
Par exemple, la commande suivante affiche l'utilisation de l'index de métadonnées de colonne pour le job my-job :
SELECT metadata_cache_statistics FROM `region-US`.INFORMATION_SCHEMA.JOBS WHERE job_id = 'my-job';
Autre exemple : l'exemple suivant affiche le nombre de jobs ayant utilisé l'index de métadonnées de colonne pour la table my-table :
SELECT COUNT(*) FROM `region-US`.INFORMATION_SCHEMA.JOBS, UNNEST(metadata_cache_statistics.table_metadata_cache_usage) AS stats WHERE stats.table_reference.table_id='my-table' AND stats.table_reference.dataset_id='my-dataset' AND stats.table_reference.project_id='my-project' AND stats.unusedReason IS NULL;
Configurer des ressources d'indexation dédiées
Pour configurer des ressources pour les mises à jour de l'indexation des métadonnées dans votre projet, vous devez d'abord disposer d'une réservation attribuée à votre projet. Pour ce faire, procédez comme suit :
- Créer une réservation
BACKGROUND. Une réservationBACKGROUNDpartage les ressources entre les jobs d'optimisation en arrière-plan. - Attribuez votre projet à la réservation.
Après avoir configuré votre réservation, sélectionnez l'une des méthodes suivantes pour attribuer des emplacements à votre job d'indexation des métadonnées. Par défaut, les emplacements que vous allouez de cette manière sont partagés avec d'autres jobs s'ils sont inactifs. Pour en savoir plus, consultez la section Emplacements inactifs.
Console
Dans la console Cloud de Confiance , accédez à la page Gestion des charges de travail.
Cliquez sur Actions de réservation > Créer une attribution.
Sélectionnez votre projet de réservation.
Définissez Type de mission sur Arrière-plan.
Cliquez sur Créer.
bq
Utilisez la commande bq mk.
bq mk \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation_assignment \ --reservation_id=RESERVATION_NAME \ --assignee_id=PROJECT_ID \ --job_type=BACKGROUND \ --assignee_type=PROJECT
Remplacez les éléments suivants :
ADMIN_PROJECT_ID: ID du projet d'administration propriétaire de la ressource de réservation.LOCATION: emplacement de la réservation.RESERVATION_NAME: nom de la réservation.PROJECT_ID: ID du projet à attribuer à cette réservation.
SQL
Pour attribuer une réservation à un projet, utilisez l'instruction LDD CREATE ASSIGNMENT.
Dans la console Cloud de Confiance , accédez à la page BigQuery.
Dans l'éditeur de requête, saisissez l'instruction suivante :
Remplacez les éléments suivants :CREATE ASSIGNMENT ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID OPTIONS ( assignee = 'projects/PROJECT_ID', job_type = 'BACKGROUND');
ADMIN_PROJECT_ID: ID du projet d'administration propriétaire de la ressource de réservation.LOCATION: emplacement de la réservation.RESERVATION_NAME: nom de la réservation.ASSIGNMENT_ID: ID de l'attribution. L'ID doit être unique au projet et à l'emplacement. Il doit commencer et se terminer par une lettre minuscule ou un chiffre, et ne doit contenir que des lettres minuscules, des chiffres et des tirets.PROJECT_ID: ID du projet contenant les tables. Ce projet est attribué à la réservation.
Cliquez sur Exécuter.
Afficher les informations sur les jobs d'indexation
Une fois que vous avez configuré vos jobs d'indexation dédiés, vous pouvez afficher des informations sur les jobs d'indexation à l'aide de la vue JOBS.
L'exemple SQL suivant montre les cinq jobs d'actualisation les plus récents dans PROJECT_NAME.
SELECT * FROM region-us.INFORMATION_SCHEMA.JOBS WHERE project_id = 'PROJECT_NAME' AND SEARCH(job_id, '`metadata_cache_refresh`') ORDER BY creation_time DESC LIMIT 5;
Remplacez PROJECT_NAME par le nom du projet contenant vos jobs d'indexation des métadonnées.
Configurer des alertes d'indexation des métadonnées
Le processus d'alerte Cloud Monitoring vous avertit lorsque les performances de BigQuery ne répondent pas aux critères définis. Pour en savoir plus, consultez Présentation des alertes. Avec l'indexation des métadonnées, vous pouvez configurer des alertes pour l'utilisation des emplacements et l'obsolescence.
Alerte d'utilisation des emplacements
Cette alerte vous avertit lorsque votre réservation en arrière-plan dépasse un pourcentage défini de son allocation. La valeur par défaut est 95%. Vous pouvez configurer cette alerte pour une réservation spécifique ou pour chaque réservation en arrière-plan. Lorsque cette alerte se déclenche, nous vous recommandons d'augmenter la taille de votre réservation.
Pour configurer cette alerte pour chaque réservation en arrière-plan, procédez comme suit :
- Configurez un canal de notification Monitoring si vous ne l'avez pas déjà fait.
Accédez à la page Intégrations.
Recherchez l'intégration BigQuery, puis cliquez sur Afficher les détails.
Dans l'onglet Alertes, sélectionnez Utilisation des emplacements - Utilisation des emplacements de cache de métadonnées en arrière-plan trop élevée.
Facultatif : Pour personnaliser davantage cette alerte, cliquez sur Afficher les options > Personnaliser la règle d'alerte.
Pour Configurer les notifications, sélectionnez votre canal de notification.
Cliquez sur Créer.
Alerte d'obsolescence
Cette alerte vous avertit lorsque l'obsolescence moyenne de l'index des métadonnées de colonne augmente trop par rapport à la moyenne existante. Le seuil par défaut est atteint si la moyenne sur quatre heures est plus de deux fois supérieure à la moyenne précédente pendant plus de 30 minutes. Lorsque cette alerte se déclenche, nous vous recommandons d'augmenter la taille de votre réservation ou de créer une réservation en arrière-plan si vous n'en avez pas.
Pour configurer cette alerte, procédez comme suit :
- Configurez un canal de notification Monitoring si vous ne l'avez pas déjà fait.
Accédez à la page Intégrations.
Recherchez l'intégration BigQuery, puis cliquez sur Afficher les détails.
Dans l'onglet Alertes, sélectionnez Obsolescence de l'index des métadonnées de la colonne - Augmentation trop importante du pourcentage.
Facultatif : Pour personnaliser davantage cette alerte, cliquez sur Afficher les options > Personnaliser la règle d'alerte.
Pour Configurer les notifications, sélectionnez votre canal de notification.
Cliquez sur Créer.
Considérations sur les performances
Bien que BigQuery élague automatiquement les données à l'aide du partitionnement et du clustering, l'indexation des métadonnées peut optimiser davantage les requêtes en élaguant les données en fonction de colonnes qui ne sont pas utilisées pour le partitionnement ou le clustering. L'efficacité de cet élagage augmente lorsqu'il existe une dépendance d'ordre entre la colonne de filtre et les colonnes de partitionnement ou de clustering de la table. Dans ce cas, vous pouvez observer moins d'octets analysés que prévu, même lorsque vous filtrez sur des colonnes qui ne font pas explicitement partie de la configuration de clustering de la table. Si une table est partitionnée, mais pas mise en cluster, l'efficacité de l'élagage est limitée pour les requêtes à la demande, et vous ne constaterez peut-être pas de réduction du nombre d'octets analysés.
Limites
Les améliorations des performances des requêtes de métadonnées ne s'appliquent qu'aux instructions SELECT, INSERT et CREATE TABLE AS SELECT. Les instructions du langage de manipulation de données (LMD) ne bénéficieront pas d'améliorations grâce à l'indexation des métadonnées.
Étapes suivantes
- Découvrez comment afficher tous les jobs de votre projet avec la vue
JOBS. - Découvrez comment afficher la capacité et l'utilisation des emplacements.