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:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
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.
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:
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
Rufen Sie in der Google Cloud Console die Seite Capacity Management auf.
Klicken Sie auf Reservierungsaktionen > Zuweisung erstellen.
Wählen Sie Ihr Reservierungsprojekt aus.
Legen Sie für Job Type (Jobtyp) den Wert Background (Hintergrund) fest.
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örtLOCATION: 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.
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
Ersetzen Sie Folgendes:CREATE ASSIGNMENT ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID OPTIONS ( assignee = 'projects/PROJECT_ID', job_type = 'BACKGROUND');
ADMIN_PROJECT_ID: die Projekt-ID des Administrationsprojekts, dem die Reservierungsressource gehörtLOCATION: 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.
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:
- Richten Sie einen Benachrichtigungskanal für das Monitoring ein, falls noch nicht geschehen.
Rufen Sie die Seite Integrationen auf.
Suchen Sie nach der BigQuery-Integration und klicken Sie auf Details ansehen.
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.
Optional: Wenn Sie diese Benachrichtigung weiter anpassen möchten, klicken Sie auf Optionen einblenden > Benachrichtigungsrichtlinie anpassen.
Wählen Sie unter Benachrichtigungen konfigurieren den gewünschten Benachrichtigungskanal aus.
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:
- Richten Sie einen Benachrichtigungskanal für das Monitoring ein, falls noch nicht geschehen.
Rufen Sie die Seite Integrationen auf.
Suchen Sie nach der BigQuery-Integration und klicken Sie auf Details ansehen.
Wählen Sie auf dem Tab Benachrichtigungen die Option Veralterung des Index für Spaltenmetadaten – Zu viel prozentuale Steigerung aus.
Optional: Wenn Sie diese Benachrichtigung weiter anpassen möchten, klicken Sie auf Optionen einblenden > Benachrichtigungsrichtlinie anpassen.
Wählen Sie unter Benachrichtigungen konfigurieren den gewünschten Benachrichtigungskanal aus.
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
- Informationen zum Aufrufen aller Jobs in Ihrem Projekt mit der
JOBS-Ansicht - Slotkapazität und ‑auslastung aufrufen