Abfrageleistung mit dem Explore-Abfrage-Tracker und dem Bereich „Leistung“ im Blick behalten

Der Explore-Abfrage-Tracker und der Bereich Explore-Leistung liefern schrittweise Leistungsdaten für eine Explore-Abfrage. Anhand dieser Daten können Sie wichtige Einstiegspunkte für die Fehlerbehebung und das Beheben von Leistungsproblemen bei Abfragen identifizieren und Empfehlungen für Verbesserungen erhalten.

Abfrage-Tracker kennenlernen

Der Explore-Abfrage-Tracker zeigt den Fortschritt einer Explore-Abfrage während der drei Phasen der Abfrage an, während die Abfrage ausgeführt wird.

Wenn die Ausführung einer Abfrage lange dauert, kann der Abfrage-Tracker angeben, welche Phase der Abfrage das Leistungsproblem verursacht. So können Sie feststellen, wo Leistungsprobleme auftreten können und wo Optimierungsmaßnahmen am effektivsten sind.

Der Abfrage-Tracker wird angezeigt, wenn ein Explore ausgeführt wird, solange entweder der Bereich Visualisierung oder der Bereich Daten des Explores geöffnet ist.

Bereich Leistung

Wenn Sie den Bereich Leistung für einen Explore aufrufen möchten, klicken Sie auf den Link Leistungsdetails ansehen, der für jede ausgeführte Explore-Abfrage verfügbar ist.

Im Bereich Leistung wird die Zeit angezeigt, die die Abfrage in jeder der drei Abfragephasen verbracht hat. Außerdem enthält er Links zur Leistungsdokumentation und zum Systemaktivitäts-Dashboard Abfrageverlauf, in dem aktuelle und historische Leistungsdaten für die Abfrage und das Explore angezeigt werden, das zum Erstellen der Abfrage verwendet wurde.

Abfragephasen

Wenn ein Looker-Explore eine Datenbankabfrage ausführt, wird die Abfrage in den folgenden drei Phasen ausgeführt:

Abfrageinitialisierungsphase

Während der Phase Abfrageinitialisierung führt Looker alle Aufgaben aus, die erforderlich sind, bevor die Abfrage an Ihre Datenbank gesendet wird. Die Phase Abfrageinitialisierung umfasst die folgenden Aufgaben:

Auf der Dokumentationsseite Messwerte zur Abfrageleistung wird beschrieben, wie Sie das Explore Messwerte zur Abfrageleistung in der Systemaktivität verwenden, um detaillierte Aufschlüsselungen einer Abfrage aufzurufen. Die Phase Abfrageinitialisierung des Abfrage-Trackers umfasst die Ereignisse, die in den Phasen Asynchrone Worker-Phase, Initialisierungsphase und Verbindungsverarbeitungsphase des Explores Abfrageleistungsmesswerte beschrieben werden.

Wenn während der Abfrageinitialisierungsphase Leistungsprobleme auftreten oder Abfragen lange dauern, führen Sie die folgenden Schritte aus:

  • Geplante Lieferungen staffeln: Wenn viele geplante Looks oder Dashboards gleichzeitig ausgelöst werden (insbesondere zur vollen Stunde), kann die plötzliche Flut gleichzeitiger Abfrageanfragen die Instanzressourcen überlasten und Verbindungspools auslasten. Dieser Nebenläufigkeitsengpass führt dazu, dass Abfragen während der Initialisierung unendlich lange warten oder sich im Kreis drehen. Veröffentliche deine geplanten Inhalte in Intervallen von 15 oder 30 Minuten (z. B. um :15, :30 oder :45), anstatt sie alle um :00 zu veröffentlichen. Weitere Informationen finden Sie unter Looker-Serverleistung optimieren.
  • Datengruppen für Zeitpläne verwenden: Lösen Sie geplante Lieferungen nach Möglichkeit mit Datengruppen aus, die auf Ihren ETL-Zyklus abgestimmt sind, anstatt zeitbasierte Trigger zu verwenden. Durch die Verwendung von Datengruppen wird die Abfrageausführung verteilt und es wird verhindert, dass redundante Abfragen für nicht aktualisierte Daten ausgeführt werden.
  • API-Aufrufe bündeln und drosseln: Wenn automatisierte Skripts oder externe Tools Abfragen oder Berichte über die Looker API auslösen, sollten Sie Batchanfragen bündeln oder Verzögerungen einbauen, um eine Überlastung der Abfrageinitialisierungswarteschlangen zu vermeiden.
  • Hängende Prozesse löschen: Wenn ein plötzlicher Anstieg der Nebenläufigkeit dazu führt, dass Abfragen hängen bleiben und Ihre Instanz nicht mehr reagiert, starten Sie die Instanz neu, um laufende Aufgaben zu löschen und interne Warteschlangen zurückzusetzen.

Abfragephase ausführen

In der Phase Abfrage wird ausgeführt kontaktiert Looker Ihre Datenbank, fragt sie ab und gibt die Ergebnisse der Abfrage zurück. Leistungsprobleme in dieser Phase können auf ein Problem mit der externen Datenbank hinweisen, z. B. auf PDTs, deren Neuerstellung lange dauert und die möglicherweise optimiert werden müssen, oder auf externe Datenbanktabellen, die möglicherweise optimiert werden müssen. Die Phase Abfrage wird ausgeführt umfasst die folgenden Aufgaben:

  • Erstellen aller PDTs in der Datenbank, die für die Explore-Abfrage erforderlich sind
  • Die angeforderte Abfrage wird für die Datenbank ausgeführt.

Auf der Dokumentationsseite Messwerte zur Abfrageleistung wird beschrieben, wie Sie das Explore Messwerte zur Abfrageleistung in der Systemaktivität verwenden, um detaillierte Aufschlüsselungen einer Abfrage aufzurufen. Die Phase Abfrage wird ausgeführt des Abfrage-Trackers umfasst die Ereignisse, die in der Phase Hauptabfragen des Explores Abfrageleistungsmesswerte beschrieben werden.

Mögliche Schritte, die Sie unternehmen können, wenn während dieser Phase Leistungsprobleme auftreten:

  • Erstellen Sie Explores nach Möglichkeit mit many_to_one-Joins. Wenn Sie Ansichten von der feinsten Detailebene mit höher aggregierten Ebenen zusammenführen (many_to_one), erzielen Sie in der Regel die beste Abfrageleistung.
  • Nutzen Sie das Caching umfassend und synchronisieren Sie es nach Möglichkeit mit Ihren ETL-Richtlinien, um den Datenbanktraffic durch Abfragen zu reduzieren. Standardmäßig speichert Looker Abfragen für eine Stunde im Cache. Sie können die Caching-Richtlinie steuern und Looker-Datenaktualisierungen mit Ihrem ETL-Prozess synchronisieren, indem Sie Datengruppen in Explores mit dem Parameter persist_with anwenden. Durch die Maximierung des Cachings kann Looker enger in die Backend-Datenpipeline eingebunden werden. Der Cache wird dann optimal genutzt, ohne das Risiko, dass veraltete Daten analysiert werden. Benannte Caching-Richtlinien können auf ein ganzes Modell oder auf einzelne Explores und persistente abgeleitete Tabellen (PDTs) angewendet werden.
  • Mit der Looker-Funktion Aggregate Awareness können Sie Roll-up- oder Zusammenfassungstabellen erstellen, die Looker nach Möglichkeit für Abfragen verwenden kann, insbesondere für gängige Abfragen großer Datenbanken. Sie können die Aggregat-Awareness auch verwenden, um die Leistung ganzer Dashboards drastisch zu verbessern. Weitere Informationen finden Sie im Tutorial zu Aggregate Awareness.
  • Verwenden Sie PDTs für schnellere Abfragen. Konvertieren Sie Explores mit vielen komplexen oder leistungsschwachen Joins oder Dimensionen mit Unterabfragen oder Unterauswahlen in PDTs, damit die Ansichten vor der Laufzeit vorab verknüpft und bereit sind.
  • Wenn Ihr Datenbankdialekt inkrementelle PDTs unterstützt, konfigurieren Sie inkrementelle PDTs, um die Zeit zu verkürzen, die Looker für die Neuerstellung von PDT-Tabellen benötigt.
  • Vermeiden Sie es, Ansichten in Explores über verkettete Primärschlüssel zusammenzuführen, die in Looker definiert sind. Führen Sie stattdessen einen Join für die Basisfelder aus, die den verketteten Primärschlüssel aus der Ansicht bilden. Alternativ können Sie die Ansicht als PDT mit dem verketteten Primärschlüssel neu erstellen, der in der SQL-Definition der Tabelle und nicht im LookML der Ansicht vordefiniert ist.
  • Verwenden Sie das Tool In SQL-Runner erklären für Benchmarking. EXPLAIN erstellt eine Übersicht über den Abfrageausführungsplan Ihrer Datenbank für eine bestimmte SQL-Abfrage, sodass Sie Abfragekomponenten erkennen können, die optimiert werden können. Weitere Informationen finden Sie im Community-Beitrag SQL mit EXPLAIN optimieren.
  • Indexe deklarieren Sie können sich die Indexe der einzelnen Tabellen direkt in Looker im SQL-Runner ansehen. Klicken Sie dazu in einer Tabelle auf das Zahnradsymbol und wählen Sie dann Indexe anzeigen aus.

    Die gängigsten Spalten, die von Indexen profitieren können, sind wichtige Datumsangaben und Fremdschlüssel. Wenn Sie diesen Spalten Indexe hinzufügen, wird die Leistung fast aller Abfragen verbessert. Dies gilt auch für PDTs. LookML-Parameter wie indexes, sort keys und distribution können entsprechend angewendet werden.

Phase „Ergebnisse werden verarbeitet“

In der Phase Ergebnisse werden verarbeitet rendert und verarbeitet Looker die Ergebnisse der Abfrage. Die Phase Ergebnisse verarbeiten umfasst die folgenden Aufgaben:

Auf der Dokumentationsseite Messwerte zur Abfrageleistung wird beschrieben, wie Sie das Explore Messwerte zur Abfrageleistung in der Systemaktivität verwenden, um detaillierte Aufschlüsselungen einer Abfrage aufzurufen. Die Phase Ergebnisse werden verarbeitet des Abfrage-Trackers umfasst die Ereignisse, die in der Phase nach der Abfrage des Explores Abfrage-Leistungsmesswerte beschrieben werden.

Mögliche Schritte, die Sie bei Leistungsproblemen in dieser Phase unternehmen können:

  • Verwenden Sie Funktionen wie zusammengeführte Ergebnisse, benutzerdefinierte Felder und Tabellenkalkulationen sparsam. Diese Funktionen sind als Proof of Concept gedacht, um Sie beim Entwerfen Ihres Modells zu unterstützen. Es empfiehlt sich, häufig verwendete Berechnungen und Funktionen in LookML fest zu codieren. Dadurch wird SQL generiert, das in Ihrer Datenbank verarbeitet werden kann. Übermäßige Berechnungen können mit dem Java-Arbeitsspeicher auf der Looker-Instanz konkurrieren, was dazu führt, dass die Looker-Instanz langsamer reagiert.
  • Begrenzen Sie die Anzahl der Ansichten, die Sie in ein Modell aufnehmen, wenn eine große Anzahl von Ansichtsdateien vorhanden ist. Wenn Sie alle Ansichten in ein einziges Modell aufnehmen, kann dies die Leistung beeinträchtigen. Wenn ein Projekt eine große Anzahl von Ansichten enthält, sollten Sie nur die Ansichtsdateien einbeziehen, die im jeweiligen Modell benötigt werden. Sie können strategische Namenskonventionen für Ansichtsdateinamen verwenden, um Gruppen von Ansichten in ein Modell einzubinden. Ein Beispiel finden Sie in der Dokumentation zum Parameter includes.
  • Vermeiden Sie es, standardmäßig eine große Anzahl von Datenpunkten in Dashboard-Tiles und Looks zurückzugeben. Abfragen, die Tausende von Datenpunkten zurückgeben, verbrauchen mehr Arbeitsspeicher. Achten Sie darauf, dass Daten nach Möglichkeit eingeschränkt werden. Wenden Sie dazu Frontend- Filter auf Dashboards, Looks und Explores an und verwenden Sie auf LookML-Ebene die Parameter required filters, conditionally_filter und sql_always_where.
  • Verwenden Sie die Option Alle Ergebnisse zum Herunterladen oder Senden von Abfragen nur sparsam, da einige Abfragen sehr groß sein und den Looker-Server bei der Verarbeitung überlasten können.