Metadatenindexierung für BigQuery-Tabellen

In diesem Dokument wird die Indexierung von Spaltenmetadaten in BigQuery beschrieben. Außerdem wird erläutert, 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 zur Optimierung und Beschleunigung Ihrer Abfragen verwendet.

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

Uhrzeit der Aktualisierung des Metadatenindexes ansehen

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. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    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 Projekts in Google Cloud . 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.

Verwendung des Index für Spaltenmetadaten ansehen

Wenn Sie nach Abschluss eines Jobs sehen möchten, ob der Index für Spaltenmetadaten verwendet wurde, prüfen Sie die Eigenschaft TableMetadataCacheUsage der Job-Ressource. Wenn das Feld unusedReason leer ist (nicht ausgefüllt), wurde der Index für Spaltenmetadaten 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 Index für Spaltenmetadaten auch mit dem Feld metadata_cache_statistics in der Ansicht INFORMATION_SCHEMA.JOBS aufrufen.

Im folgenden Beispiel wird die Verwendung des Spaltenmetadatenindex 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, in denen 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;

Dedizierte Indexierungsressourcen einrichten

Um Ressourcen für Metadatenindexierungs-Updates in Ihrem Projekt einzurichten, muss Ihrem Projekt zuerst eine Reservierung zugewiesen sein. Gehen Sie dazu so vor:

  1. BACKGROUND-Reservierung erstellen
  2. Weisen Sie der Reservierung Ihr Projekt zu.

Nachdem Sie Ihre Reservierung eingerichtet haben, wählen Sie 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 Capacity Management auf.

    Zur Kapazitätsverwaltung

  2. Klicken Sie auf Reservierungsaktionen > Zuweisung erstellen.

  3. Wählen Sie Ihr Reservierungsprojekt aus.

  4. Legen Sie für Job Type (Jobtyp) den Wert Background (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 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. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    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 ansehen

Nachdem Sie Ihre dedizierten Indexierungsjobs eingerichtet haben, können Sie Informationen dazu in der JOBS-Ansicht aufrufen. Das folgende SQL-Beispiel zeigt die fünf letzten 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

Sie werden über den Cloud Monitoring-Benachrichtigungsprozess benachrichtigt, wenn die BigQuery-Leistung nicht den definierten Kriterien entspricht. Weitere Informationen finden Sie unter Benachrichtigungen – Übersicht. Mit der Metadatenindexierung können Sie Benachrichtigungen für die Slotnutzung und die Aktualität konfigurieren.

Benachrichtigung zur Slot-Nutzung

Sie werden benachrichtigt, 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 Ihnen, die Größe Ihrer Reservierung zu erhöhen.

So konfigurieren Sie diese Benachrichtigung für jede Hintergrundreservierung:

  1. Richten Sie einen Benachrichtigungskanal für das Monitoring ein, falls noch nicht geschehen.
  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 Slot Usage - Background Metadata Cache Slot Usage Too High (Slot-Nutzung – Slot-Nutzung des Hintergrund-Metadaten-Cache zu hoch) aus.

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

  6. Wählen Sie unter Benachrichtigungen konfigurieren den gewünschten Benachrichtigungskanal aus.

  7. Klicken Sie auf Erstellen.

Warnung zu veralteten Daten

Sie werden benachrichtigt, wenn die durchschnittliche Veraltung des Index für Spaltenmetadaten im Vergleich zum vorhandenen Durchschnitt zu stark zunimmt. Der Standardschwellenwert wird überschritten, wenn der Durchschnitt über 4 Stunden mehr als doppelt so hoch ist wie der vorherige Durchschnitt über einen Zeitraum von mehr als 30 Minuten. Wenn diese Benachrichtigung ausgelöst wird, empfehlen wir Ihnen, die Größe Ihrer Reservierung zu erhöhen oder eine Reservierung im Hintergrund zu erstellen, falls Sie noch keine haben.

So konfigurieren Sie diese Benachrichtigung:

  1. Richten Sie einen Benachrichtigungskanal für das Monitoring ein, falls noch nicht geschehen.
  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 Index für Spaltenmetadaten – Zu viel prozentuale Steigerung aus.

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

  6. Wählen Sie unter Benachrichtigungen konfigurieren den gewünschten Benachrichtigungskanal aus.

  7. Klicken Sie auf Erstellen.

Beschränkungen

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

Nächste Schritte