Abfragen zwischenspeichern

Looker reduziert die Belastung Ihrer Datenbank und verbessert die Leistung, indem im Cache gespeicherte Ergebnisse früherer SQL-Abfragen verwendet werden, sofern diese verfügbar sind und diese Funktion gemäß Ihrer Caching-Richtlinie zulässig ist. Auf dieser Seite werden die Standardrichtlinie für das Caching von Looker sowie die verfügbaren Optionen zum Ändern der Dauer der im Cache gespeicherten Ergebnisse auf Ihrer Looker-Instanz beschrieben.

So verwendet Looker im Cache gespeicherte Abfragen

Bei SQL-Abfragen funktioniert der Caching-Mechanismus in Looker so:

  1. Wenn eine SQL-Abfrage von einem Explore, Look oder Dashboard aus ausgeführt wird, prüft Looker den Cache, um festzustellen, ob für diese Abfrage bereits Ergebnisse im Cache gespeichert sind. Im Cache gespeicherte Ergebnisse werden nur verwendet, wenn alle Aspekte der Abfrage identisch sind, einschließlich Feldern, Filtern, Parametern und Zeilenlimits.

  2. Wenn im Cache gespeicherte Ergebnisse gefunden werden, prüft Looker die im LookML-Modell definierte Caching-Richtlinie, um festzustellen, ob die im Cache gespeicherten Ergebnisse abgelaufen sind. Wenn die im Cache gespeicherten Ergebnisse nicht abgelaufen sind, verwendet Looker die im Cache gespeicherten Ergebnisse für die Abfrage.

  3. Wenn für die Abfrage keine im Cache gespeicherten Ergebnisse gefunden werden oder die im Cache gespeicherten Ergebnisse abgelaufen sind, führt Looker die Abfrage für die Datenbank aus. Die neuen Abfrageergebnisse werden dann im Cache gespeichert.

Die standardmäßige Aufbewahrungsrichtlinie für den Cache beträgt eine Stunde. Im nächsten Abschnitt, Cache-Aufbewahrungsrichtlinien ändern, wird erläutert, wie Sie diesen Zeitraum verkürzen oder verlängern können. Außerdem werden Optionen zum Synchronisieren Ihrer Cache-Aufbewahrungsrichtlinie mit dem ETL-Prozess Ihrer Datenbank (Extrahieren, Transformieren und Laden) beschrieben.

Cache-Aufbewahrungsrichtlinien ändern

Sie können Cache-Aufbewahrungsrichtlinien auf LookML-Explore-Ebene und auf LookML-Modellebene festlegen.

Es wird empfohlen, den Parameter datagroup auf Modellebene im Cache zu verwenden. Mithilfe von Datengruppen können Sie die Cache-Aufbewahrungsrichtlinie eines Modells mit dem ETL-Zeitplan Ihrer Datenbank synchronisieren. Dazu verwenden Sie den Parameter sql_trigger und legen mit dem Parameter max_cache_age ein Cache-Ablaufintervall fest. Weitere Informationen finden Sie im Abschnitt Abfragen im Cache speichern und PDTs mit Datengruppen neu erstellen.

Für eine einfachere Herangehensweise können Sie stattdessen den Parameter persist_for auf Modellebene oder Ebene für explorative Datenanalysen verwenden. Wenn Sie den Parameter persist_for auf diese Weise verwenden, können Sie ein Cache-Ablaufintervall festlegen, das das Standardintervall von einer Stunde überschreibt. Die Verwendung von persist_for ist jedoch aus einigen Gründen weniger robust als die Verwendung von Datengruppen, wie im Abschnitt Abfragen mit persist_for zwischenspeichern erläutert.

Wenn für ein Explore oder Modell eine Datengruppe oder ein persist_for definiert ist, wird die Caching-Richtlinie so geändert:

  • Vor Ablauf des Intervalls persist_for oder Ablauf des Intervalls max_cache_age der Datengruppe: Wenn die Abfrage noch einmal ausgeführt wird, ruft Looker Daten aus dem Cache ab.
  • Zu dem Zeitpunkt, an dem das Intervall persist_for oder das Intervall max_cache_age der Datengruppe abläuft: Looker löscht Daten aus dem Cache.
  • Nach Ablauf des Intervalls persist_for oder Ablauf des Intervalls max_cache_age der Datengruppe: Wenn die Abfrage noch einmal ausgeführt wird, ruft Looker die Daten direkt aus der Datenbank ab und setzt das Intervall persist_for oder max_cache_age zurück.

Ein wichtiger Punkt ist hier, dass die Daten aus dem Cache gelöscht werden, wenn das Intervall persist_for oder max_cache_age abläuft.

Wenn der Cache das Speicherlimit erreicht, werden die Daten gemäß einem LRU-Algorithmus (Least Recent Use) entfernt. Dabei wird nicht garantiert, dass Daten mit abgelaufenen persist_for- oder max_cache_age-Intervallen auf einmal gelöscht werden.

Minimieren der Zeit, die Ihre Daten im Cache verbringen

Looker schreibt Abfrageergebnisse immer in den Cache. Auch wenn die Intervalle persist_for und max_cache_age auf null gesetzt sind, können Daten im Cache noch bis zu 10 Minuten lang gespeichert werden. Alle Kundendaten im Festplatten-Cache werden mit AES (Advanced Encryption Standard) verschlüsselt.

So minimieren Sie die Zeit, die Daten im Cache gespeichert werden:

  • Legen Sie für alle persist_for-Parameter (für ein Modell oder ein Explore) oder max_cache_age-Parameter (für eine Datengruppe) den Wert 0 minutes fest. Looker löscht den Cache, wenn das Intervall persist_for abläuft oder die Daten das Intervall max_cache_age erreichen, das in der zugehörigen Datengruppe angegeben ist. (Der Parameter persist_for von PDTs muss nicht auf 0 minutes gesetzt werden, um die Datenmenge zu minimieren, die im Cache gespeichert wird. PDTs werden in die Datenbank selbst und nicht in den Cache geschrieben.)
  • Legen Sie für den Parameter suggest_persist_for ein kleines Intervall fest. Der Wert suggest_persist_for gibt an, wie lange Looker Filtervorschläge im Cache speichern soll. Die Filtervorschläge basieren auf einer Abfrage der Werte für das Feld, das gefiltert wird. Diese Abfrageergebnisse werden im Cache gespeichert, damit Looker schnell Vorschläge machen kann, während der Benutzer Text in das Filtertextfeld eingibt. Standardmäßig werden die Filtervorschläge sechs Stunden lang im Cache gespeichert. Um die Zeit zu minimieren, in der sich Ihre Daten im Cache befinden, legen Sie für suggest_persist_for einen niedrigeren Wert fest, z. B. 5 minutes.

Prüfen, ob eine Abfrage aus dem Cache zurückgegeben wurde

In einem Explore-Fenster können Sie feststellen, ob eine Abfrage aus dem Cache zurückgegeben wurde, indem Sie sich die Informationen neben der Schaltfläche Run (Ausführen) ansehen, nachdem Sie eine Abfrage ausgeführt haben.

Wenn eine Abfrage vom Cache zurückgegeben wird, wird der Text „aus dem Cache“ angezeigt. Andernfalls wird die Zeit angezeigt, die für die Rückgabe der Abfrage benötigt wurde.

Generieren neuer Ergebnisse aus der Datenbank erzwingen

In einem Explore-Fenster können Sie erzwingen, dass neue Ergebnisse aus der Datenbank abgerufen werden. Nachdem Sie eine Abfrage (einschließlich Abfragen für zusammengeführte Ergebnisse) ausgeführt haben, wählen Sie im Zahnradmenü Explore Actions (Aktionen ansehen) die Option Clear Cache & Refresh (Cache leeren und aktualisieren).

Abfragen im Cache speichern und PDTs mit Datengruppen neu erstellen

Verwenden Sie Datengruppen, um den ETL-Zeitplan (Extrahieren, Transformieren und Laden) Ihrer Datenbank mit der Caching-Richtlinie von Looker und dem Zeitplan zur PDT-Neuerstellung zu koordinieren.

Mit einer Datengruppe können Sie den Auslöser für die Neuerstellung von PDTs abhängig davon angeben, wann der Datenbank neue Daten hinzugefügt werden. Anschließend können Sie dieselbe Datengruppe auf Ihr Explore oder Modell anwenden, sodass im Cache gespeicherte Ergebnisse auch ablaufen, wenn die PDTs neu erstellt werden.

Alternativ können Sie eine Datengruppe verwenden, um den Trigger für die PDT-Neuerstellung von Ihrem maximalen Cache-Alter zu entkoppeln. Dies kann nützlich sein, wenn Sie ein Explore haben, das sowohl auf Daten basiert, die sehr häufig aktualisiert werden, als auch mit einer PDT verknüpft ist, die seltener neu erstellt wird. In diesem Fall möchten Sie vielleicht, dass der Abfragecache häufiger zurückgesetzt wird, als die PDT neu erstellt wird.

Datengruppe definieren

Definieren Sie eine Datengruppe mit dem Parameter datagroup, entweder in einer Modelldatei oder in einer eigenen LookML-Datei. Sie können mehrere Datengruppen definieren, wenn Sie für verschiedene Explores und/oder PDTs in Ihrem Projekt unterschiedliche Richtlinien für Caching und PDT-Neuerstellung wünschen.

Der Parameter datagroup kann die folgenden Unterparameter haben:

  • label: gibt ein optionales Label für die Datengruppe an.
  • description: Gibt eine optionale Beschreibung für die Datengruppe an, mit der der Zweck und Mechanismus der Datengruppe erläutert werden kann.
  • max_cache_age: Gibt einen String an, der einen Zeitraum definiert. Wenn das Alter des Caches einer Abfrage den Zeitraum überschreitet, entwertet Looker den Cache. Bei der nächsten Ausgabe der Abfrage sendet Looker die Abfrage an die Datenbank, um neue Ergebnisse zu erhalten.
  • sql_trigger: Gibt eine SQL-Abfrage an, die eine Zeile mit einer Spalte zurückgibt. Wenn sich der von der Abfrage zurückgegebene Wert von den vorherigen Ergebnissen der Abfrage unterscheidet, erhält die Datengruppe den Status „Ausgelöst“.
  • interval_trigger: Gibt einen Zeitplan zum Auslösen der Datengruppe an, z. B. "24 hours".

Eine Datengruppe muss mindestens den Parameter max_cache_age, sql_trigger oder interval_trigger haben.

Hier ist ein Beispiel für eine Datengruppe mit einer sql_trigger, die so eingerichtet ist, dass die PDT jeden Tag neu erstellt wird. Darüber hinaus ist max_cache_age so eingestellt, dass der Abfragecache alle zwei Stunden geleert wird, wenn Explores PDTs mit anderen Daten verknüpfen, die häufiger als einmal täglich aktualisiert werden.

datagroup: customers_datagroup {
  sql_trigger: SELECT DATE(NOW());;
  max_cache_age: "2 hours"
}

Nachdem Sie die Datengruppe definiert haben, können Sie sie Explores und PDTs zuweisen:

Mit einer Datengruppe einen Neuerstellungstrigger für PDTs angeben

Wenn Sie einen Trigger zur Neuerstellung von PDTs mithilfe von Datengruppen definieren möchten, erstellen Sie einen datagroup-Parameter mit dem Unterparameter sql_trigger oder interval_trigger. Weisen Sie dann die Datengruppe einzelnen PDTs mithilfe des Unterparameters datagroup_trigger in der derived_table-Definition der PDT zu. Wenn Sie datagroup_trigger für Ihre PDT verwenden, müssen Sie für die abgeleitete Tabelle keine andere Persistenzstrategie angeben. Wenn Sie mehrere Persistenzstrategien für eine PDT angeben, erhalten Sie in der Looker-IDE eine Warnung und nur die datagroup_trigger wird verwendet.

Das folgende Beispiel zeigt eine PDT-Definition mit der Datengruppe customers_datagroup. Mit dieser Definition werden außerdem mehrere Indexe für customer_id und first_order_date hinzugefügt. Weitere Informationen zum Definieren von PDTs finden Sie auf der Dokumentationsseite Abgeleitete Tabellen in Looker.

view: customer_order_facts {
  derived_table: {
    sql: ... ;;
    datagroup_trigger: customers_datagroup
    indexes: ["customer_id", "first_order_date"]
  }
}

Weitere Informationen zur Funktionsweise von Datengruppen mit PDTs finden Sie auf der Dokumentationsseite Abgeleitete Tabellen in Looker.

Verwenden einer Datengruppe, um das Zurücksetzen des Abfrage-Cache für Explores anzugeben

Wenn eine Datengruppe ausgelöst wird, erstellt der Looker-Regenerator die PDTs neu, die diese Datengruppe als Persistenzstrategie verwenden. Nachdem die PDTs der Datengruppe neu erstellt wurden, leert Looker den Cache für Explores, die die neu erstellten PDTs der Datengruppe verwenden. Sie können der Datengruppendefinition den Parameter max_cache_age hinzufügen, wenn Sie einen Zeitplan zum Zurücksetzen des Abfragecaches für die Datengruppe anpassen möchten. Mit dem Parameter max_cache_age können Sie den Abfragecache nach einem bestimmten Zeitplan löschen, zusätzlich zur automatischen Rücksetzung des Abfragecaches, die Looker beim Neuerstellen der PDTs der Datengruppe durchführt.

Um eine Richtlinie für das Speichern von Abfragen im Cache mit Datengruppen zu definieren, erstellen Sie einen datagroup-Parameter mit dem Unterparameter max_cache_age.

Verwenden Sie den Parameter persist_with, um eine Datengruppe anzugeben, die für das Zurücksetzen des Abfragecaches in Explores verwendet werden soll:

Die folgenden Beispiele zeigen eine Datengruppe mit dem Namen orders_datagroup, die in einer Modelldatei definiert ist. Die Datengruppe hat einen sql_trigger-Parameter, der angibt, dass die Abfrage select max(id) from my_tablename verwendet wird, um zu erkennen, wann ein ETL durchgeführt wurde. Selbst wenn dieses ETL eine Zeit lang nicht auftritt, gibt der max_cache_age der Datengruppe an, dass die im Cache gespeicherten Daten maximal 24 Stunden lang verwendet werden.

Der Parameter persist_with des Modells verweist auf die Caching-Richtlinie orders_datagroup. Dies bedeutet, dass dies die Standard-Caching-Richtlinie für alle Explores im Modell ist. Da wir jedoch nicht die Standard-Caching-Richtlinie des Modells für die Explores customer_facts und customer_background verwenden möchten, können wir den Parameter persist_with hinzufügen, um für diese beiden Explores eine andere Caching-Richtlinie anzugeben. Die Explores orders und orders_facts haben keinen persist_with-Parameter, daher verwenden sie die Standardrichtlinie für das Caching des Modells: orders_datagroup.

datagroup: orders_datagroup {
  sql_trigger: SELECT max(id) FROM my_tablename ;;
  max_cache_age: "24 hours"
}

datagroup: customers_datagroup {
  sql_trigger: SELECT max(id) FROM my_other_tablename ;;
}

persist_with: orders_datagroup

explore: orders { ... }

explore: order_facts { ... }

explore: customer_facts {
  persist_with: customers_datagroup
  ...
}

explore: customer_background {
  persist_with: customers_datagroup
  ...
}

Wenn sowohl persist_with als auch persist_for angegeben sind, erhalten Sie eine Validierungswarnung und persist_with wird verwendet.

Datengruppe zum Auslösen geplanter Übermittlungen verwenden

Datengruppen können auch verwendet werden, um die Übermittlung eines Dashboards oder eines Looks auszulösen. Mit dieser Option sendet Looker Ihre Daten, wenn die Datengruppe abgeschlossen ist, sodass der geplante Inhalt auf dem neuesten Stand ist.

Über den Admin-Bereich für Datengruppen

Wenn Sie die Looker-Administratorrolle haben, können Sie die vorhandenen Datengruppen im Admin-Bereich auf der Seite Datengruppen ansehen. Sie können die Verbindung, das Modell und den aktuellen Status jeder Datengruppe sehen und – falls in der LookML angegeben – ein Label und eine Beschreibung für jede Datengruppe sehen. Sie können auch den Cache für eine Datengruppe zurücksetzen, die Datengruppe auslösen oder zum LookML-Code der Datengruppe wechseln.

Abfragen mit persist_for im Cache speichern

Mit dem Parameter persist_for auf Modellebene oder Explore-Ebene können Sie das standardmäßige Looker-Aufbewahrungsdauer für den Cache von 1 Stunde ändern. Du kannst Intervalle zwischen 0 minutes und 8760 hours (1 Jahr) oder mehr festlegen.

Das Definieren von persist_for-Parametern kann schneller und einfacher, aber weniger robust sein als das Definieren von Datengruppen. Datengruppen werden aus folgenden Gründen gegenüber persist_for empfohlen:

  • Datengruppen können mit dem ETL-Prozess Ihrer Datenbank synchronisiert werden.
  • Sie können Datengruppen in mehreren Modellen und Explores wiederverwenden. Das bedeutet, dass Sie den max_cache_age einer Datengruppe aktualisieren können. Dadurch wird auch die Caching-Richtlinie an jedem Ort aktualisiert, an dem die Datengruppe verwendet wird.
  • Auf der Seite Datengruppen können Sie den gesamten mit einer Datengruppe verknüpften Cache leeren.