Metadatenindexierung für BigQuery-Tabellen
BigQuery indexiert automatisch Spaltenmetadaten für BigQuery-Tabellen, die größer als 1 GiB sind, und verwendet diesen Index, um Ihre Abfragen zu beschleunigen. Die Metadaten enthalten Dateispeicherorte, Partitionierungsinformationen und Attribute auf Spaltenebene. Standardmäßig ist die Indexierung ein kostenloser Hintergrundvorgang. 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 Indexaktualität für Ihre Arbeitslast entscheidend ist, können Sie dedizierte Ressourcen zuweisen, indem Sie eine BACKGROUND-Reservierung konfigurieren.
In diesem Dokument wird beschrieben, wie Sie die Aktualität und Nutzung von Indexen überwachen, dedizierte Indexierungsressourcen einrichten und Indexierungsbenachrichtigungen konfigurieren.
Aktualisierungszeit des Metadatenindex ansehen
Wenn Sie die Uhrzeit der letzten Aktualisierung des Metadatenindex 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:
Rufen Sie in der Cloud de Confiance 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 Projekts in Cloud de Confiance by S3NS . 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 Index für Spaltenmetadaten ansehen
Wenn Sie nach Abschluss eines Jobs prüfen möchten, ob der Index für Spaltenmetadaten verwendet wurde, rufen Sie das Attribut TableMetadataCacheUsage der Job-Ressource auf. Wenn das Feld unusedReason leer ist (nicht ausgefüllt), wurde der Index für Spaltenmetadaten verwendet. Wenn es ausgefüllt ist, wird im zugehörigen Feld explanation ein Grund angegeben, warum der Index für Spaltenmetadaten nicht verwendet wurde.
Sie können die Nutzung des Spaltenmetadatenindex 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, die den Index für Spaltenmetadaten 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 werden. Gehen Sie dazu so vor:
BACKGROUND-Reservierung erstellen EineBACKGROUND-Reservierung teilt Ressourcen für Hintergrundoptimierungsjobs.- Weisen Sie Ihr Projekt der Reservierung zu.
Nachdem Sie die 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, mit anderen Jobs geteilt, wenn die Slots inaktiv sind. Weitere Informationen finden Sie unter Inaktive Slots.
Console
Rufen Sie in der Cloud de Confiance Console die Seite Arbeitslastverwaltung auf.
Klicken Sie auf Reservierungsaktionen > Zuweisung erstellen.
Wählen Sie Ihr Reservierungsprojekt aus.
Legen Sie für Jobtyp die Option 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 einem Projekt eine Reservierung zuzuweisen.
Rufen Sie in der Cloud de Confiance 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 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 zu den Indexierungsjobs mit der Ansicht JOBS aufrufen.
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
Der Benachrichtigungsprozess von Cloud Monitoring informiert Sie, 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 Slot-Nutzung und die Veraltung konfigurieren.
Benachrichtigung zur Slot-Nutzung
Diese Benachrichtigung informiert Sie, 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, die Größe der Reservierung zu 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 die BigQuery-Integration und klicken Sie auf Details ansehen.
Wählen Sie auf dem Tab Benachrichtigungen die Option Slot-Nutzung – Slot-Nutzung für Hintergrund-Metadaten-Cache 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.
Veralterungswarnung
Diese Benachrichtigung informiert Sie, wenn die durchschnittliche Veraltung des Spaltenmetadatenindex im Vergleich zum vorhandenen Durchschnitt zu stark ansteigt. Der Standardgrenzwert ist erreicht, wenn der Durchschnitt über 4 Stunden mehr als 30 Minuten lang mehr als doppelt so hoch ist wie der vorherige Durchschnitt. 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 die BigQuery-Integration und klicken Sie auf Details ansehen.
Wählen Sie auf dem Tab Benachrichtigungen die Option Veralterung des Index für Spaltenmetadaten – zu hoher prozentualer Anstieg 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 automatisch mithilfe von Partitionierung und Clustering. Die Metadatenindexierung kann Abfragen jedoch weiter optimieren, indem Daten basierend auf Spalten bereinigt werden, die nicht für die Partitionierung oder das Clustering verwendet werden. Die Effektivität dieses Prunings erhöht sich, wenn eine Sortierabhä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 Sie nach Spalten filtern, die nicht explizit Teil der Clustering-Konfiguration der Tabelle sind. Wenn eine Tabelle nur partitioniert, aber nicht geclustert ist, ist die Bereinigungseffektivität für On-Demand-Abfragen eingeschränkt und die Anzahl der gescannten Byte wird möglicherweise nicht reduziert.
Beschränkungen
Leistungsverbesserungen bei Metadatenabfragen gelten nur für SELECT-, INSERT- und CREATE TABLE AS SELECT-Anweisungen. Bei Anweisungen der Datenbearbeitungssprache (DML) werden keine Verbesserungen durch die Metadatenindexierung erzielt.