Indexation des métadonnées pour les tables BigQuery

Ce document décrit l'indexation des métadonnées de colonne dans BigQuery et explique comment allouer des ressources dédiées pour améliorer la fraîcheur de l'index et les performances des requêtes.

BigQuery indexe automatiquement les métadonnées des tables BigQuery de plus de 1 Go. Ces métadonnées incluent l'emplacement du fichier, des informations de partitionnement et des attributs au niveau des colonnes, que BigQuery utilise pour optimiser et accélérer vos requêtes.

Par défaut, l'indexation des métadonnées dans BigQuery est une opération en arrière-plan sans frais et ne nécessite aucune action de votre part. Toutefois, la fraîcheur de l'index dépend des ressources libres disponibles et n'a pas d'objectifs de niveau de service (SLO) de performances. Si la fraîcheur de l'index est essentielle pour votre cas d'utilisation, nous vous recommandons de configurer une réservation BACKGROUND.

Afficher l'heure d'actualisation de l'index de métadonnées

Pour afficher la dernière date et heure d'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:

  1. Dans la console Google Cloud , accédez à la page BigQuery.

    Accéder à BigQuery

  2. 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 Google Cloud projet. Si non spécifié, le projet par défaut est utilisé.
    • REGION: région où se trouve le projet (par exemple, region-us).
  3. Cliquez sur Exécuter.

Afficher l'utilisation de l'index de métadonnées de colonne

Pour savoir si l'index de métadonnées de colonne a été utilisé une fois une tâche terminée, vérifiez la propriété TableMetadataCacheUsage de la ressource Job. Si le champ unusedReason est vide (non renseigné), l'indice des 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 la colonne n'a pas été utilisé.

Vous pouvez également afficher l'utilisation de l'index des métadonnées de colonne avec le champ metadata_cache_statistics dans la vue INFORMATION_SCHEMA.JOBS.

Par exemple, l'exemple suivant affiche l'utilisation de l'index des métadonnées de colonne pour la tâche my-job:

SELECT metadata_cache_statistics
FROM `region-US`.INFORMATION_SCHEMA.JOBS
WHERE job_id = 'my-job';

Par exemple, l'exemple suivant affiche le nombre de tâches qui ont utilisé l'index des 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 d'indexation des métadonnées dans votre projet, vous devez d'abord attribuer une réservation à votre projet. Pour ce faire, procédez comme suit:

  1. Créez une réservation BACKGROND.
  2. 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 tâche d'indexation des métadonnées. Par défaut, les emplacements que vous allouez de cette manière sont partagés avec d'autres tâches s'ils sont inactifs. Pour en savoir plus, consultez la section Emplacements inactifs.

Console

  1. Dans la console Google Cloud , accédez à la page Gestion de la capacité.

    Accéder à la page "Gestion de la capacité"

  2. Cliquez sur  Actions de réservation > Créer une attribution.

  3. Sélectionnez votre projet de réservation.

  4. Définissez le champ Job Type (Type de tâche) sur Background (En arrière-plan).

  5. 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.

  1. Dans la console Google Cloud , accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans l'éditeur de requête, saisissez l'instruction suivante :

    CREATE ASSIGNMENT
    ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID
    OPTIONS (
      assignee = 'projects/PROJECT_ID',
      job_type = 'BACKGROUND');
    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.
    • 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.
  3. Cliquez sur Exécuter.

Afficher les informations sur la tâche d'indexation

Une fois que vous avez configuré vos tâches d'indexation dédiées, vous pouvez afficher des informations à leur sujet avec la vue JOBS. L'exemple SQL suivant affiche les cinq tâches d'actualisation les plus récentes 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 tâches 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 la section Présentation des alertes. Avec l'indexation des métadonnées, vous pouvez configurer des alertes pour l'utilisation et l'obsolescence des emplacements.

Alerte d'utilisation des emplacements

Cette alerte vous informe 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:

  1. Configurez un canal de notification de surveillance si ce n'est pas déjà fait.
  2. Accédez à la page Intégrations.

    Accéder à la page "Intégrations"

  3. Recherchez l'intégration BigQuery, puis cliquez sur Afficher les détails.

  4. Dans l'onglet Alertes, sélectionnez Utilisation des emplacements : utilisation trop élevée des emplacements de cache de métadonnées en arrière-plan.

  5. Facultatif: Pour personnaliser davantage cette alerte, cliquez sur Afficher les options > Personnaliser la règle d'alerte.

  6. Sous Configurer les notifications, sélectionnez votre canal de notification.

  7. Cliquez sur Créer.

Alerte d'obsolescence

Cette alerte vous avertit lorsque l'obsolescence moyenne de l'indice 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 du double de 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:

  1. Configurez un canal de notification de surveillance, si ce n'est pas déjà fait.
  2. Accédez à la page Intégrations.

    Accéder à la page "Intégrations"

  3. Recherchez l'intégration BigQuery, puis cliquez sur Afficher les détails.

  4. Dans l'onglet Alertes, sélectionnez Obsolescence de l'index des métadonnées de colonne : trop d'augmentation en pourcentage.

  5. Facultatif: Pour personnaliser davantage cette alerte, cliquez sur Afficher les options > Personnaliser la règle d'alerte.

  6. Sous Configurer les notifications, sélectionnez votre canal de notification.

  7. Cliquez sur Créer.

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 de l'indexation des métadonnées.

Étape suivante