Metadatenindexierung für BigQuery-Tabellen

In diesem Dokument wird die Indexierung von Spaltenmetadaten in BigQuery beschrieben. Außerdem erfahren Sie, wie Sie spezielle Ressourcen zuweisen, um die Indexaktualität und Abfrageleistung zu verbessern.

BigQuery indexiert automatisch Metadaten für BigQuery-Tabellen, die mehr als 1 GiB groß sind. Diese Metadaten umfassen den Speicherort der Datei, Informationen zur Partitionierung und Attribute auf Spaltenebene, die BigQuery zur Optimierung und Beschleunigung Ihrer Abfragen verwendet.

Standardmäßig ist die Metadatenindexierung in BigQuery ein kostenloser Hintergrundvorgang, der keine Maßnahmen von Ihrer Seite erfordert. Die Indexaktualität hängt jedoch von verfügbaren freien Ressourcen ab und hat keine Leistungs-Service Level Objectives (SLOs). Wenn die Indexaktualität für Ihren Anwendungsfall entscheidend ist, empfehlen wir die Konfiguration einer BACKGROUND-Reservierung.

Uhrzeit der Aktualisierung des Metadatenindexes aufrufen

Wenn Sie die Uhrzeit der letzten Aktualisierung des Metadatenindexes einer Tabelle sehen möchten, fragen Sie die Spalte LAST_METADATA_INDEX_REFRESH_TIME der Ansicht INFORMATION_SCHEMA.TABLE_STORAGE ab. Gehen Sie dazu so vor:

  1. Rufen Sie in der Google Cloud 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 Google Cloud Projekts. 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 Spaltenmetadatenindexes ansehen

Ob der Metadatenindex der Spalte nach Abschluss eines Jobs verwendet wurde, sehen Sie in der Eigenschaft TableMetadataCacheUsage der Job-Ressource. Wenn das Feld unusedReason leer ist, wurde der Metadatenindex der Spalte verwendet. Wenn es ausgefüllt ist, enthält das zugehörige explanation-Feld einen Grund dafür, warum der Metadatenindex der Spalte nicht verwendet wurde.

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

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

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

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

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;

Spezielle Indexierungsressourcen einrichten

Damit Sie Ressourcen für Aktualisierungen der Metadatenindexierung in Ihrem Projekt einrichten können, muss Ihrem Projekt zuerst eine Reservierung zugewiesen werden. Gehen Sie dazu so vor:

  1. Erstellen Sie eine BACKGROND-Reservierung.
  2. Weisen Sie der Reservierung Ihr Projekt zu.

Wählen Sie nach der Einrichtung Ihrer Reservierung eine der folgenden Methoden aus, um Ihrem Metadatenindexierungsjob Slots zuzuweisen. Standardmäßig werden Slots, die Sie auf diese Weise zuweisen, für andere Jobs freigegeben, wenn sie inaktiv sind. Weitere Informationen finden Sie unter Inaktive Slots.

Console

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

    Kapazitätsverwaltung aufrufen

  2. Klicken Sie auf Reservierungsaktionen > Aufgabe erstellen.

  3. Wählen Sie Ihr Reservierungsprojekt aus.

  4. Legen Sie für Job Type (Jobtyp) den Wert Background 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 Administrationsprojekts, 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 DDL-Anweisung CREATE ASSIGNMENT, um einer Reservierung ein Projekt zuzuweisen.

  1. Rufen Sie in der Google Cloud 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 Administrationsprojekts, 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, die die Tabellen enthält. Dieses Projekt wird der Reservierung zugewiesen.
  3. Klicken Sie auf Ausführen.

Informationen zu Indexierungsjobs aufrufen

Nachdem Sie Ihre Indexierungsjobs eingerichtet haben, können Sie sich in der Ansicht JOBS Informationen zu den Indexierungsjobs ansehen. Das folgende SQL-Beispiel zeigt die fünf neuesten Aktualisierungsjobs in 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;

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

Benachrichtigungen zur Metadatenindexierung konfigurieren

Über das Cloud Monitoring-Benachrichtigungsverfahren werden Sie informiert, wenn die BigQuery-Leistung nicht die festgelegten Kriterien erfüllt. Weitere Informationen finden Sie unter Benachrichtigungen. Mit der Metadatenindexierung können Sie Benachrichtigungen für die Slotnutzung und die Gültigkeitsdauer konfigurieren.

Benachrichtigung zur Slotnutzung

Sie werden benachrichtigt, wenn die Hintergrundreservoirs einen bestimmten Prozentsatz ihrer Zuweisung überschreiten. 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 Ihnen, die Größe der Reservierung zu erhöhen.

So konfigurieren Sie diese Benachrichtigung für jede Hintergrundreservierung:

  1. Richten Sie einen Benachrichtigungskanal für die Überwachung 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.

Warnung bei Veralterung

Sie werden benachrichtigt, wenn die durchschnittliche Metadatenindex-Veralterung der Spalte im Vergleich zum vorhandenen Durchschnitt zu stark zunimmt. Der Standardgrenzwert ist erreicht, wenn der Durchschnitt über vier Stunden mehr als doppelt so hoch wie der vorherige Durchschnitt ist und dies länger als 30 Minuten anhält. Wenn diese Benachrichtigung ausgelöst wird, empfehlen wir, die Größe der Reservierung zu erhöhen oder eine Hintergrundreservierung zu erstellen, falls Sie noch keine haben.

So konfigurieren Sie diese Benachrichtigung:

  1. Richten Sie einen Benachrichtigungskanal für die Überwachung 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 Veralterung des Indexes für Metadaten von Spalten – zu starker prozentualer Anstieg 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 für Metadatenabfragen gelten nur für SELECT-, INSERT- und CREATE TABLE AS SELECT-Anweisungen. Bei DML-Anweisungen (Data Manipulation Language, Datenbearbeitungssprache) kommt es durch die Metadatenindexierung nicht zu Leistungsverbesserungen.

Nächste Schritte