Metadatenindexierung für BigQuery-Tabellen

In diesem Dokument wird die Indexierung von Spaltenmetadaten in BigQuery beschrieben und erklärt, wie Sie dedizierte Ressourcen zuweisen, um die Aktualität des Index und die Abfrageleistung zu verbessern.

BigQuery indexiert automatisch Metadaten für BigQuery-Tabellen mit mehr als 1 GiB. Diese Metadaten umfassen den Dateispeicherort, Partitionierungsinformationen und Attribute auf Spaltenebene, die BigQuery verwendet, um Ihre Abfragen zu optimieren und zu beschleunigen.

Standardmäßig ist die Metadatenindexierung in BigQuery ein kostenloser Hintergrundvorgang, für den keine Maßnahmen von Ihrer Seite erforderlich sind. Die Aktualität des Index hängt jedoch von den verfügbaren kostenlosen Ressourcen ab und es gibt keine Service Level Objectives (SLOs) für die Leistung. Wenn die Aktualität des Index für Ihren Anwendungsfall entscheidend ist, empfehlen wir, eine BACKGROUND Reservierung, bei der Ressourcen für Hintergrundoptimierungsjobs freigegeben werden, zu konfigurieren.

Aktualisierungszeit des Metadatenindex ansehen

Wenn Sie die letzte Aktualisierungszeit des Metadatenindex einer Tabelle sehen möchten, fragen Sie die LAST_METADATA_INDEX_REFRESH_TIME Spalte der INFORMATION_SCHEMA.TABLE_STORAGE Ansicht ab. Gehen Sie dazu so vor:

  1. Rufen Sie in der Cloud de Confiance Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. Geben Sie im Abfrageeditor die folgende Anweisung ein:

    SELECT
      project_id,
      project_number,
      table_name,
      last_metadata_index_refresh_time
    FROM
      [PROJECT_ID.]region-REGION.INFORMATION_SCHEMA.TABLE_STORAGE;

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die ID Ihres Cloud de Confiance by S3NS Projekts in. Wenn keine Angabe erfolgt, wird das Standardprojekt verwendet.
    • REGION: die Region , in der sich das Projekt befindet, z. B. region-us.
  3. Klicken Sie auf Ausführen.

Nutzung des Spaltenmetadatenindex ansehen

Wenn Sie sehen möchten, ob der Spaltenmetadatenindex nach Abschluss eines Jobs verwendet wurde, prüfen Sie die TableMetadataCacheUsage Eigenschaft der Job-Ressource. Wenn das Feld unusedReason leer ist (nicht ausgefüllt), wurde der Spaltenmetadatenindex verwendet. Wenn es ausgefüllt ist, enthält das zugehörige Feld explanation einen Grund dafür, warum der Spaltenmetadatenindex nicht verwendet wurde.

Sie können die Nutzung des Spaltenmetadatenindex auch mit dem metadata_cache_statistics Feld in der INFORMATION_SCHEMA.JOBS Ansicht ansehen.

Im folgenden Beispiel wird die Nutzung des Spaltenmetadatenindex für den Job my-job angezeigt:

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

Ein weiteres Beispiel: Im folgenden Beispiel wird die Anzahl der Jobs angezeigt, die den Spaltenmetadatenindex für die Tabelle my-table verwendet haben:

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;

Dedizierte Indexierungsressourcen einrichten

Wenn Sie Ressourcen für Aktualisierungen der Metadatenindexierung in Ihrem Projekt einrichten möchten, muss Ihrem Projekt zuerst eine Reservierung zugewiesen sein. Gehen Sie dazu so vor:

  1. Erstellen Sie eine BACKGROUND Reservierung.
  2. Weisen Sie Ihrem Projekt die Reservierung zu.

Nachdem Sie Ihre Reservierung eingerichtet haben, wählen Sie eine der folgenden Methoden aus, um Ihrem Metadatenindexierungsjob Slots zuzuweisen. Standardmäßig werden auf diese Weise zugewiesene Slots für andere Jobs freigegeben, wenn sie nicht verwendet werden. Weitere Informationen finden Sie unter siehe Inaktive Slots.

Console

  1. Rufen Sie in der Cloud de Confiance Console die Seite Kapazitätsverwaltung auf.

    Kapazitätsverwaltung aufrufen

  2. Klicken Sie auf Reservierungsaktionen > Zuweisung erstellen.

  3. Wählen Sie Ihr Reservierungsprojekt aus.

  4. Legen Sie für Jobtyp den Wert Hintergrund fest.

  5. Klicken Sie auf Erstellen.

bq

Führen Sie den Befehl bq mk aus.

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

Ersetzen Sie Folgendes:

  • ADMIN_PROJECT_ID: die Projekt-ID des Verwaltungsprojekts , zu dem die Reservierungsressource gehört.
  • LOCATION: der Standort der Reservierung.
  • RESERVATION_NAME: der Name der Reservierung.
  • PROJECT_ID: die Projekt-ID, die dieser Reservierung zugewiesen werden soll.

SQL

Verwenden Sie die CREATE ASSIGNMENT DDL-Anweisung, um einem Projekt eine Reservierung zuzuweisen.

  1. Rufen Sie in der Cloud de Confiance Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. Geben Sie im Abfrageeditor die folgende Anweisung ein:

    CREATE ASSIGNMENT
    ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID
    OPTIONS (
      assignee = 'projects/PROJECT_ID',
      job_type = 'BACKGROUND');
    Ersetzen Sie Folgendes:

    • ADMIN_PROJECT_ID: die Projekt-ID des Verwaltungsprojekts , zu dem die Reservierungsressource gehört.
    • LOCATION: der Standort der Reservierung.
    • RESERVATION_NAME: Der Name der Reservierung.
    • ASSIGNMENT_ID: die ID der Zuweisung. Die ID muss für das Projekt und den Standort eindeutig sein, mit einem Kleinbuchstaben oder einer Zahl beginnen und enden und darf nur Kleinbuchstaben, Zahlen und Bindestriche enthalten.
    • PROJECT_ID: die Projekt-ID mit den Tabellen. Dieses Projekt wird der Reservierung zugewiesen.
  3. Klicken Sie auf Ausführen.

Informationen zu Indexierungsjobs ansehen

Nachdem Sie Ihre dedizierten Indexierungsjobs eingerichtet haben, können Sie Informationen zu den Indexierungsjobs mit der JOBS Ansicht ansehen. Im folgenden SQL-Beispiel werden die fünf letzten Aktualisierungsjobs in PROJECT_NAME angezeigt.

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;

Ersetzen Sie PROJECT_NAME durch den Namen des Projekts, das Ihre Metadatenindexierungsjobs enthält.

Benachrichtigungen zur Metadatenindexierung konfigurieren

Der Benachrichtigungsprozess von Cloud Monitoring benachrichtigt Sie, wenn die Leistung von BigQuery nicht die festgelegten Kriterien erfüllt. Weitere Informationen finden Sie unter Benachrichtigungen – Übersicht. Bei der Metadatenindexierung können Sie Benachrichtigungen für die Slotnutzung und die Aktualität konfigurieren.

Benachrichtigung zur Slotnutzung

Diese Benachrichtigung wird gesendet, wenn die Hintergrundreservierung einen bestimmten Prozentsatz ihrer Zuweisung überschreitet. Der Standardwert ist 95%. Sie können diese Benachrichtigung für eine bestimmte Reservierung oder für jede Hintergrundreservierung konfigurieren. Wenn diese Benachrichtigung ausgelöst wird, empfehlen wir, dass Sie die Größe Ihrer Reservierung erhöhen.

So konfigurieren Sie diese Benachrichtigung für jede Hintergrundreservierung:

  1. Richten Sie einen Monitoring-Benachrichtigungskanal ein, falls Sie dies noch nicht getan haben.
  2. Rufen Sie die Seite Integrationen auf.

    Zu „Integrationen“

  3. Suchen Sie nach der BigQuery-Integration und klicken Sie auf Details ansehen.

  4. Wählen Sie auf dem Tab Benachrichtigungen die Option Slotnutzung – Hintergrund-Metadaten-Cache-Slotnutzung zu hoch aus.

  5. Optional: Wenn Sie diese Benachrichtigung weiter anpassen möchten, klicken Sie auf Optionen anzeigen > Benachrichtigungsrichtlinie anpassen.

  6. Wählen Sie unter Benachrichtigungen konfigurieren Ihren Benachrichtigungskanal aus.

  7. Klicken Sie auf Erstellen.

Benachrichtigung zur Aktualität

Diese Benachrichtigung wird gesendet, wenn die durchschnittliche Aktualität des Spaltenmetadatenindex im Vergleich zum vorhandenen Durchschnitt zu stark ansteigt. Der Standardgrenzwert wird ausgelöst, wenn der Durchschnitt über vier Stunden mehr als doppelt so hoch ist wie der vorherige Durchschnitt und dies länger als 30 Minuten der Fall ist. Wenn diese Benachrichtigung ausgelöst wird, empfehlen wir, die Größe Ihrer Reservierung zu erhöhen oder eine Hintergrundreservierung zu erstellen, falls Sie noch keine haben.

So konfigurieren Sie diese Benachrichtigung:

  1. Richten Sie einen Monitoring-Benachrichtigungskanal ein, falls Sie dies noch nicht getan haben.
  2. Rufen Sie die Seite Integrationen auf.

    Zu „Integrationen“

  3. Suchen Sie nach der BigQuery-Integration und klicken Sie auf Details ansehen.

  4. Wählen Sie auf dem Tab Benachrichtigungen die Option Aktualität des Spaltenmetadatenindex – prozentualer Anstieg zu hoch aus.

  5. Optional: Wenn Sie diese Benachrichtigung weiter anpassen möchten, klicken Sie auf Optionen anzeigen > Benachrichtigungsrichtlinie anpassen.

  6. Wählen Sie unter Benachrichtigungen konfigurieren Ihren Benachrichtigungskanal aus.

  7. Klicken Sie auf Erstellen.

Beschränkungen

Leistungsverbesserungen bei Metadatenabfragen gelten nur für die Anweisungen SELECT, INSERT und CREATE TABLE AS SELECT. Anweisungen der Datenbearbeitungssprache (Data Manipulation Language, DML) profitieren nicht von der Metadatenindexierung.

Nächste Schritte