Materialisierte Ansichten überwachen
In der BigQuery-Ansicht INFORMATION_SCHEMA
können Sie die Nutzung von materialisierten Ansicht überwachen und Jobs aktualisieren. Informationen zum Erstellen einer Liste von materialisierten Ansichten finden Sie unter Materialisierte Ansichten auflisten.
Ansicht INFORMATION_SCHEMA
für materialisierte Ansichten
Fragen Sie die Ansicht INFORMATION_SCHEMA.TABLES
ab, um materialisierte Ansichten zu ermitteln. Fragen Sie die Ansicht INFORMATION_SCHEMA.TABLE_OPTIONS
ab, um die Attribute einer materialisierten Ansicht abzurufen.
Materialisierte Ansichten sind nicht in der Tabelle für INFORMATION_SCHEMA.VIEWS
-Ansichten aufgeführt.
Automatische Aktualisierung überwachen
In diesem Abschnitt wird beschrieben, wie Sie Aktualisierungsdetails für materialisierte Ansichten aufrufen.
Status der letzten Aktualisierung ansehen
Rufen Sie die Methode tables.get
auf oder fragen Sie die Ansicht INFORMATION_SCHEMA.MATERIALIZED_VIEWS
ab, um den aktuellen Status von materialisierten Ansichten abzurufen.
Beispiel:
SELECT table_name, last_refresh_time, refresh_watermark, last_refresh_status FROM `DATASET`.INFORMATION_SCHEMA.MATERIALIZED_VIEWS;
Wenn der Wert für last_refresh_status
nicht NULL
ist, ist der letzte automatische Aktualisierungsjob fehlgeschlagen. Manuelle Aktualisierungsanfragen werden hier nicht berücksichtigt. Änderungen an Basistabellen können eine Definition einer materialisierten Ansicht ungültig machen, was zu einem Fehler bei der automatischen Aktualisierung führt. Weitere Informationen finden Sie unter Inkrementelle Aktualisierungen. Wenn beispielsweise eine Spalte, auf die von der materialisierten Ansicht verwiesen wird, aus der Basistabelle entfernt wird, gibt das Feld last_refresh_status
den Fehler invalidQuery
zurück. Weitere Informationen finden Sie unter Fehlermeldungen.
Automatische Aktualisierungsjobs auflisten
Rufen Sie die Methode jobs.list
auf, um automatische Aktualisierungsjobs für materialisierte Ansichten aufzulisten. Rufen Sie die Methode jobs.get
auf, um Details zu den Jobs abzurufen. Sie können auch die INFORMATION_SCHEMA.JOBS_BY_*
-Ansichten abfragen, um die Jobs abzurufen. Automatische Aktualisierungsjobs enthalten das Präfix materialized_view_refresh
in der Job-ID und werden von einem BigQuery-Administratorkonto gestartet.
Beispiel:
SELECT job_id, total_slot_ms, total_bytes_processed, materialized_view_statistics.materialized_view[SAFE_OFFSET(0)].rejected_reason AS full_refresh_reason FROM `region-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT` WHERE job_id LIKE '%materialized_view_refresh_%' LIMIT 10;
Wenn Sie die Kosten für Aktualisierungsjobs beobachten und das Intervall für automatische Aktualisierungen anpassen möchten, rufen Sie die Felder total_bytes_processed
und total_slot_ms
auf.
So ist es beispielsweise sinnvoll, die Ansicht seltener zu aktualisieren, wenn die Aufnahmerate in den Basistabellen relativ klein ist. Wenn sich die zugrunde liegenden Daten schnell ändern, ist eine häufigere Aktualisierung sinnvoll.
Wenn die Basistabellen Daten zu vordefinierten Zeitpunkten aufnehmen, z. B. mithilfe einer nächtlichen Extrahierungs-, Transformations- und Lade-Pipeline (ETL), sollten Sie den Wartungsplan für die materialisierte Ansicht so steuern:
Führen Sie eine manuelle Aktualisierung durch. Dies kann entweder als Teil der ETL-Pipeline stattfinden oder Sie legen eine geplante Abfrage zu bestimmten Tageszeiten fest.
Weitere Informationen zu den Preisen für materialisierte Ansichten finden Sie unter Preise für materialisierte Ansichten.
Nutzung von materialisierten Ansichten überwachen
Zum Aufrufen der Nutzung von materialisierten Ansichten für einen Abfragejob können Sie die Methode jobs.get
aufrufen oder die Ansicht INFORMATION_SCHEMA.JOBS_BY_*
abfragen und sich das Feld materialized_view_statistics
ansehen. Es enthält Details zur Verwendung von materialisierten Ansichten durch die Abfrage, einschließlich der folgenden:
- Ob die materialisierte Ansicht verwendet wurde
- Ob die materialisierte Ansicht nicht verwendet wurde und warum sie abgelehnt wurde.
Beispiel:
SELECT job_id, materialized_view_statistics FROM region-US.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE job_id = '<my-query-job-id>';
Fragen Sie die Ansichten INFORMATION_SCHEMA.JOBS_BY_*
ab, um die Nutzung einer materialisierten Ansicht im Zeitverlauf anzuzeigen.
Die folgende Abfrage gibt beispielsweise eine Zusammenfassung der letzten Abfragejobs zurück, die die materialisierte Zielansicht verwenden:
SELECT mv.table_reference.dataset_id, mv.table_reference.table_id, MAX(job.creation_time) latest_job_time, COUNT(job_id) job_count FROM region-US.INFORMATION_SCHEMA.JOBS_BY_PROJECT job, UNNEST(materialized_view_statistics.materialized_view) mv WHERE job.creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 7 DAY) AND mv.table_reference.dataset_id = 'my_dataset' AND mv.table_reference.table_id = 'my_materialized_view' AND mv.chosen = TRUE GROUP BY 1, 2;
Fehlerbehebung bei langsamen Abfragen mit materialisierten Ansichten
Wenn die Abfrage materialisierte Ansichten verwendet und langsamer als erwartet ausgeführt wird, gehen Sie so vor:
- Prüfen Sie, ob die beabsichtigten materialisierten Ansichten tatsächlich von der Abfrage verwendet werden. Eine ausführliche Anleitung finden Sie unter Nutzung von materialisierten Ansichten überwachen.
- Aktualität der materialisierten Ansicht prüfen.
- Prüfen Sie die Definition der materialisierten Ansicht und die Daten, auf die sie verweist, und ziehen Sie Techniken zur Optimierung der Nutzung von materialisierten Ansichten in Betracht.