Empfehlungen für materialisierte Ansichten verwalten

In diesem Dokument wird die Funktionsweise des Recommenders für materialisierte Ansichten beschrieben. Außerdem erfahren Sie, wie Sie Empfehlungen für materialisierte Ansichten aufrufen und anwenden.

Einleitung

Mit dem Recommender für materialisierte Ansichten in BigQuery können Sie die Arbeitslastleistung verbessern und Kosten für die Ausführung der Arbeitslast sparen. Diese Empfehlungen basieren auf Verlaufseigenschaften der Abfrageausführung der letzten 30 Tage.

Materialisierte Ansichten bietet vorausberechnete Ansichten, die die Ergebnisse einer Abfrage regelmäßig im Cache speichern, um die Leistung und Effizienz zu steigern. Materialisierte Ansichten verwenden eine intelligente Abstimmung, um Abfragen transparent für Quelltabellen neu zu schreiben, um vorhandene materialisierte Ansichten für eine bessere Leistung und Effizienz zu verwenden.

Funktionsweise des Recommenders

Der Recommender generiert täglich Empfehlungen für jedes Projekt, das Abfragejobs in BigQuery ausführt. Empfehlungen basieren auf der Analyse der Arbeitslastausführung in den letzten 30 Tagen. Der Recommender für materialisierte Ansichten sucht nach sich wiederholenden Abfragemustern und berechnet alle Einsparungen, wenn die sich wiederholende Unterabfrage in eine inkrementelle materialisierte Ansicht verschoben werden kann. Der Recommender berücksichtigt alle Einsparungen zum Zeitpunkt der Abfrage und berücksichtigt die Wartungskosten für die materialisierte Ansicht. Wenn diese kombinierten Faktoren ein signifikantes positives Ergebnis zeigen, gibt der Recommender eine Empfehlung.

Betrachten Sie das folgende Abfragebeispiel:

WITH revenue   AS
(SELECT l_suppkey as supplier_no,
        sum(l_extendedprice * (1 - l_discount)) as total_revenue
  FROM lineitem
  WHERE
    l_shipdate >= date '1996-01-01'
    AND l_shipdate < date_add(date '1996-01-01', interval 3 MONTH)
  GROUP BY l_suppkey)
SELECT s_suppkey,
      s_name,
      s_address,
      s_phone,
      total_revenue
FROM
supplier,
revenue
WHERE s_suppkey = supplier_no
AND total_revenue =
  (SELECT max(total_revenue)
    FROM revenue)
ORDER BY s_suppkey

Dieses Abfragebeispiel enthält Informationen zum Top-Anbieter. Die Abfrage enthält einen allgemeinen Tabellenausdruck mit dem Namen revenue, der den Gesamtumsatz pro Anbieter (l_suppkey) darstellt. revenue ist unter Bedingung, dass total_revenue des Anbieters unter allen Lieferanten mit max(total_revenue) übereinstimmt, mit der Anbietertabelle verbunden. Daher berechnet die Abfrage Informationen (l_suppkey, s_name, s_address, s_phone, total_revenue) zum Anbieter mit dem maximalen Gesamtumsatz.

Die gesamte Abfrage selbst ist zu kompliziert, um in eine inkrementelle materialisierte Ansicht eingebunden zu werden. Der CTE von supplier ist jedoch eine Zusammenfassung einer einzelnen Tabelle: Ein Abfragemuster, das von inkrementellen materialisierten Ansichten unterstützt wird. Der supplier-CTE ist auch der rechenintensivste Teil der Abfrage. Wenn also die Beispielabfrage wiederholt über sich ständig ändernde Quelltabellen ausgeführt wurde, könnte der Recommender für materialisierte Ansichten vorschlagen, die supplier-CTE in eine materialisierte Ansicht zu versetzen. Die Empfehlung der materialisierten Ansicht für die vorherige Beispielabfrage kann in etwa so aussehen:

CREATE MATERIALIZED VIEW mv AS
SELECT l_suppkey as supplier_no,
         sum(l_extendedprice * (1 - l_discount)) as total_revenue
  FROM lineitem
  WHERE
    l_shipdate >= date '1996-01-01'
    AND l_shipdate < date_add(date '1996-01-01', interval 3 MONTH)
  GROUP BY l_suppkey

Die Recommender API gibt auch Informationen zur Abfrageausführung in der Form Statistiken. Statistiken sind Erkenntnisse, mit denen Sie die Arbeitslast Ihres Projekts verstehen können. Sie erhalten dadurch mehr Kontext dazu, wie eine Empfehlung für eine materialisierte Ansicht die Arbeitslastkosten verbessern kann.

Beschränkungen

Hinweise

Bevor Sie Empfehlungen für materialisierte Ansichten aufrufen oder anwenden können, müssen Sie die Recommender API aktivieren.

Erforderliche Berechtigungen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Betrachter von BigQuery Materialized View Recommender (roles/recommender.bigqueryMaterializedViewViewer) zu gewähren, um die Berechtigungen zu erhalten, die Sie für den Zugriff auf Empfehlungen für materialisierte Ansichten benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

Diese vordefinierte Rolle enthält die Berechtigungen, die für den Zugriff auf Empfehlungen für materialisierte Ansichten erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind für den Zugriff auf Empfehlungen für materialisierte Ansichten erforderlich:

  • recommender.bigqueryMaterializedViewRecommendations.get
  • recommender.bigqueryMaterializedViewRecommendations.list

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Weitere Informationen zu IAM-Rollen und Berechtigungen in BigQuery finden Sie unter Einführung in IAM.

Empfehlungen für die materialisierte Ansicht ansehen

In diesem Abschnitt wird beschrieben, wie Sie Empfehlungen und Statistiken für materialisierte Ansichten mit der Google Cloud Console, der Google Cloud CLI oder der Recommender API aufrufen.

Wählen Sie eine der folgenden Optionen aus:

Console

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    BigQuery aufrufen

  2. Klicken Sie auf Empfehlungen.

    Klicken Sie auf „Empfehlungen“, um alle Empfehlungen aufzurufen.

  3. Der Bereich BigQuery-Empfehlungen wird geöffnet. Klicken Sie unter BigQuery-Arbeitslastkosten optimieren auf Details ansehen.

    Details ansehen, um alle BigQuery-Empfehlungen zu sehen

  4. Eine Empfehlungsliste mit allen Empfehlungen, die für das aktuelle Projekt generiert wurden, wird angezeigt. Jede Empfehlung in dieser Liste zeigt die ungefähren Einsparungen an, wenn die Empfehlung angewendet wurde. Klicken Sie auf Details, um weitere Informationen zu einer bestimmten Empfehlung für materialisierte Ansichten oder Tabellenstatistiken aufzurufen.

gcloud

Verwenden Sie den Befehl gcloud recommender recommendations list, um Empfehlungen für materialisierte Ansichten für ein bestimmtes Projekt aufzurufen:

gcloud recommender recommendations list \
    --project=PROJECT_NAME \
    --location=REGION_NAME \
    --recommender=google.bigquery.materializedview.Recommender \
    --format=FORMAT_TYPE \

Ersetzen Sie Folgendes:

  • PROJECT_NAME ist der Name des Projekts, in dem Abfragejobs ausgeführt werden.
  • REGION_NAME ist die Region, in der die Abfragejobs ausgeführt werden
  • FORMAT_TYPE: ein unterstütztes Ausgabeformat der gcloud CLI, z. B. JSON
. In der folgenden Tabelle werden die wichtigen Felder aus der Antwort „recommendations“ beschrieben:

Attribut Relevant für Untertyp Beschreibung
recommenderSubtype CREATE_MATERIALIZED_VIEW Der Typ der Empfehlung.
content.overview.sql CREATE_MATERIALIZED_VIEW Vorgeschlagene DDL-Anweisung, mit der eine materialisierte Ansicht erstellt wird
content.overview.slotMsSavedMonthly CREATE_MATERIALIZED_VIEW Geschätzte Slot-Millisekunden, die monatlich durch die vorgeschlagene Ansicht gespeichert werden.
content.overview.bytesSavedMonthly CREATE_MATERIALIZED_VIEW Geschätzte Byte, die gescannt werden und monatlich von der vorgeschlagenen Ansicht gespeichert werden.
content.overview.baseTables CREATE_MATERIALIZED_VIEW Reserviert für zukünftige Verwendungen.

Verwenden Sie den Befehl gcloud recommender insights list, um mit der gcloud CLI Statistiken aufzurufen, für die Empfehlungen für materialisierte Ansichten angefordert wurden:

gcloud recommender insights list \
    --project=PROJECT_NAME \
    --location=REGION_NAME \
    --insight-type=google.bigquery.materializedview.Insight \
    --format=FORMAT_TYPE \

Ersetzen Sie Folgendes:

  • PROJECT_NAME ist der Name des Projekts, in dem Abfragejobs ausgeführt werden.
  • REGION_NAME ist die Region, in der die Abfragejobs ausgeführt werden.
  • FORMAT_TYPE: ein unterstütztes Ausgabeformat der gcloud CLI, z. B. JSON
In der folgenden Tabelle werden die wichtigen Felder der insights API-Antwort beschrieben:

Attribut Relevant für Untertyp Beschreibung
content.queryCount CREATE_MATERIALIZED_VIEW Anzahl der Abfragen im Beobachtungszeitraum mit einem sich wiederholenden Muster, das mithilfe der materialisierten Ansicht optimiert werden kann.

REST API

Verwenden Sie die REST API, um Empfehlungen für materialisierte Ansichten für ein bestimmtes Projekt aufzurufen. Bei jedem Befehl müssen Sie ein Authentifizierungstoken angeben, das Sie mit der gcloud CLI abrufen können. Weitere Informationen zum Abrufen eines Authentifizierungstokens finden Sie unter Methoden zum Abrufen eines ID-Tokens.

Mit der curl list-Anfrage können Sie alle Empfehlungen für ein bestimmtes Projekt anzeigen:

$ curl
-H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "x-goog-user-project: PROJECT_NAME" https://recommender.googleapis.com/v1/projects/PROJECT_NAME/locations/LOCATION/recommenders/google.bigquery.materializedview.Recommender/recommendations

Ersetzen Sie Folgendes:

  • PROJECT_NAME: der Name des Projekts, das Ihre BigQuery-Tabelle enthält
  • LOCATION ist der Standort, an dem sich das Projekt befindet.
In der folgenden Tabelle werden die wichtigen Felder der Antwort "Empfehlungen" beschrieben:

Attribut Relevant für Untertyp Beschreibung
recommenderSubtype CREATE_MATERIALIZED_VIEW Der Typ der Empfehlung.
content.overview.sql CREATE_MATERIALIZED_VIEW Vorgeschlagene DDL-Anweisung, mit der eine materialisierte Ansicht erstellt wird
content.overview.slotMsSavedMonthly CREATE_MATERIALIZED_VIEW Geschätzte Slot-Millisekunden, die monatlich durch die vorgeschlagene Ansicht gespeichert werden.
content.overview.bytesSavedMonthly CREATE_MATERIALIZED_VIEW Geschätzte Byte, die gescannt werden und monatlich von der vorgeschlagenen Ansicht gespeichert werden.
content.overview.baseTables CREATE_MATERIALIZED_VIEW Reserviert für zukünftige Verwendungen.

Führen Sie den folgenden Befehl aus, um mit der REST API Informationen aufzurufen, zu denen Empfehlungen für materialisierte Ansichten angefordert wurden:

$ curl
-H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "x-goog-user-project: PROJECT_NAME" https://recommender.googleapis.com/v1/projects/PROJECT_NAME/locations/LOCATION/insightTypes/google.bigquery.materializedview.Insight/insights

Ersetzen Sie Folgendes:

  • PROJECT_NAME: der Name des Projekts, das Ihre BigQuery-Tabelle enthält
  • LOCATION ist der Standort, an dem sich das Projekt befindet.
In der folgenden Tabelle werden die wichtigen Felder der insights API-Antwort beschrieben:

Attribut Relevant für Untertyp Beschreibung
content.queryCount CREATE_MATERIALIZED_VIEW Anzahl der Abfragen im Beobachtungszeitraum mit einem sich wiederholenden Muster, das mithilfe der materialisierten Ansicht optimiert werden kann.

Empfehlungen für materialisierte Ansichten anwenden

Sie können eine Empfehlung zum Erstellen einer materialisierten Ansicht anwenden, indem Sie die vorgeschlagene DDL-Anweisung CREATE MATERIALIZED VIEW in der Google Cloud Console ausführen.

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    BigQuery aufrufen

  2. Klicken Sie auf Empfehlungen.

    Klicken Sie auf „Empfehlungen“, um alle Empfehlungen aufzurufen.

  3. Der Bereich BigQuery-Empfehlungen wird geöffnet. Klicken Sie unter BigQuery-Arbeitslastkosten optimieren auf Details ansehen.

    Details ansehen, um alle BigQuery-Empfehlungen zu sehen

  4. Eine Empfehlungsliste mit allen Empfehlungen, die für das aktuelle Projekt generiert wurden, wird angezeigt. Suchen Sie eine Empfehlung für materialisierte Ansichten und klicken Sie auf Details.

  5. Klicken Sie auf In BigQuery Studio ansehen. Ein SQL-Editor wird geöffnet, der eine CREATE MATERIALIZED VIEW-DDL-Anweisung enthält.

  6. Ändern Sie in der bereitgestellten CREATE MATERIALIZED VIEW-Anweisung den Platzhalter MATERIALIZED_VIEW mit einem eindeutigen Namen für die materialisierte Ansicht.

  7. Führen Sie die CREATE MATERIALIZED VIEW-DDL-Anweisung aus, um eine empfohlene materialisierte Ansicht zu erstellen.

Probleme mit Empfehlungen beheben

Problem: Für eine bestimmte Tabelle werden keine Empfehlungen angezeigt.

Empfehlungen für materialisierte Ansichten werden unter folgenden Umständen möglicherweise nicht angezeigt:

  • Unter den von einem Projekt ausgeführten Abfragejobs wurden keine wiederkehrenden Abfragemuster gefunden.
  • Wiederkehrende Abfragemuster erfüllen nicht die Einschränkungen für inkrementelle materialisierte Ansichten und können nicht in eine materialisierte Ansicht eingefügt werden, die für eine intelligente Feinabstimmung geeignet ist.
  • Potenzielle materialisierte Ansichten würden hohe Wartungskosten verursachen. Beispiel: Quelltabellen werden häufig durch DML-Vorgänge (Data Manipulation Language, Datenbearbeitungssprache) geändert. Daher würde eine materialisierte Ansicht vollständig aktualisiert werden, was zu weiteren Kosten führt.
  • Es gibt eine unzureichende Anzahl von Abfragen mit einem gemeinsamen wiederkehrenden Muster.
  • Die geschätzten monatlichen Einsparungen sind zu unbedeutend (weniger als 1 Slot).
  • Vom Projekt ausgeführte Abfragejobs verwenden bereits materialisierte Ansichten.

Preise

Die Anzeige von Empfehlungen erzeugt keine Kosten oder negative Auswirkungen auf die Arbeitslastleistung.

Wenn Sie Empfehlungen durch das Erstellen von materialisierten Ansichten anwenden, können Kosten für Speicher, Wartung und Abfrage anfallen. Weitere Informationen finden Sie unter Preise für materialisierte Ansichten.