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. Zu diesen Metadaten gehören der Speicherort der Datei, 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:
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
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 in. 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.
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: Hier 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:
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
Rufen Sie in der Google Cloud Console die Seite Kapazitätsverwaltung auf.
Klicken Sie auf Reservierungsaktionen > Zuweisung erstellen.
Wählen Sie Ihr Reservierungsprojekt aus.
Legen Sie für Jobtyp den Wert 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 ReservierungRESERVATION_NAME: der Name der ReservierungPROJECT_ID: die Projekt-ID, die dieser Reservierung zugewiesen werden soll
SQL
Verwenden Sie die
CREATE ASSIGNMENT DDL-Anweisung, um einer Reservierung ein Projekt zuzuweisen.
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
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 ReservierungRESERVATION_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.
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.
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
Der Benachrichtigungsprozess von Cloud Monitoring informiert Sie, wenn die BigQuery-Leistung nicht die definierten Kriterien erfüllt. Weitere Informationen finden Sie unter Benachrichtigungen. Bei der Metadatenindexierung können Sie Benachrichtigungen für die Slotnutzung und Veraltung konfigurieren.
Benachrichtigung zur Slotnutzung
Diese Benachrichtigung wird gesendet, wenn Ihre Hintergrundreservierung einen definierten 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:
- Richten Sie einen Monitoring-Benachrichtigungskanal ein, falls Sie dies noch nicht getan haben.
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 Slotnutzung – Hintergrund-Metadatencache-Slotnutzung zu hoch aus.
Optional: Wenn Sie diese Benachrichtigung weiter anpassen möchten, klicken Sie auf Optionen anzeigen > Benachrichtigungsrichtlinie anpassen.
Wählen Sie unter Benachrichtigungen konfigurieren Ihren Benachrichtigungskanal aus.
Klicken Sie auf Erstellen.
Benachrichtigung zu Veraltung
Diese Benachrichtigung wird gesendet, wenn die durchschnittliche Veraltung des Spaltenmetadatenindex im Vergleich zum vorhandenen Durchschnitt zu stark ansteigt. Der Standardgrenzwert ist, wenn der Durchschnitt über 4 Stunden mehr als doppelt so hoch ist wie der vorherige Durchschnitt für mehr als 30 Minuten. 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:
- Richten Sie einen Monitoring-Benachrichtigungskanal ein, falls Sie dies noch nicht getan haben.
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 Veraltung des Spaltenmetadatenindex – prozentualer Anstieg zu hoch aus.
Optional: Wenn Sie diese Benachrichtigung weiter anpassen möchten, klicken Sie auf Optionen anzeigen > Benachrichtigungsrichtlinie anpassen.
Wählen Sie unter Benachrichtigungen konfigurieren Ihren Benachrichtigungskanal aus.
Klicken Sie auf Erstellen.
Hinweise zur Leistung
BigQuery bereinigt Daten zwar automatisch mithilfe von Partitionierung und Clustering, aber die Metadatenindexierung kann Abfragen weiter optimieren, indem Daten basierend auf Spalten bereinigt werden, die nicht für die Partitionierung oder das Clustering verwendet werden. Die Effektivität dieser Bereinigung steigt, wenn eine Abhängigkeit zwischen der Filterspalte und den Partitionierungs- oder Clustering-Spalten der Tabelle besteht. In diesen Fällen werden möglicherweise weniger Byte gescannt als erwartet, auch wenn nach Spalten gefiltert wird, die nicht explizit Teil der Clustering-Konfiguration der Tabelle sind. Wenn eine Tabelle nur partitioniert, aber nicht geclustert ist, ist die Effektivität der Bereinigung für On-Demand-Abfragen begrenzt und Sie sehen möglicherweise keine Reduzierung der gescannten Byte.
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
- Informationen zum Aufrufen aller Jobs in Ihrem Projekt mit der
JOBSAnsicht - Informationen zum Aufrufen der Slotkapazität und -auslastung