Abfragen zwischenspeichern

Looker reduziert die Belastung Ihrer Datenbank und verbessert die Leistung, indem zwischengespeicherte Ergebnisse früherer SQL-Abfragen verwendet werden, wenn diese verfügbar sind und wenn diese Funktion von Ihrer Caching-Richtlinie zugelassen ist. Auf dieser Seite werden die Standard-Caching-Richtlinie von Looker sowie die verfügbaren Optionen zum Ändern der Dauer von im Cache gespeicherten Ergebnissen auf Ihrer Looker-Instanz beschrieben.

Verwendung von im Cache gespeicherten Abfragen durch Looker

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

  1. Wenn eine SQL-Abfrage von einem Explore, Look oder Dashboard ausgeführt wird, prüft Looker den Cache, um festzustellen, ob bereits Ergebnisse für diese Abfrage im Cache vorhanden sind. Im Cache gespeicherte Ergebnisse werden nur verwendet, wenn alle Aspekte der Abfrage identisch sind, einschließlich Felder, Filter, Parameter 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 keine im Cache gespeicherten Ergebnisse für die Abfrage gefunden werden oder wenn 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 (Extrahieren, Transformieren und Laden) Ihrer Datenbank beschrieben.

Cache-Aufbewahrungsrichtlinien ändern

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

Der empfohlene Caching-Mechanismus ist die Verwendung eines datagroup-Parameters auf Modellebene. Mit Datagroups 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 einen einfacheren Ansatz können Sie stattdessen den Parameter persist_for auf Modellebene oder auf der Explore-Ebene 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 verschiedenen Gründen weniger robust als Datengruppen, wie im Abschnitt Abfragen mit persist_for im Cache speichern beschrieben.

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

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

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

Wenn der Cache das Speicherlimit erreicht, werden die Daten auf der Grundlage eines LRU-Algorithmus entfernt, wobei keine Garantie dafür besteht, 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 im Cache gespeicherte Daten bis zu 10 Minuten lang gespeichert werden. Alle Kundendaten im Festplatten-Cache sind 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 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 wenn die Daten das in der zugehörigen Datengruppe angegebene Intervall max_cache_age erreichen. Der Parameter persist_for von PATs 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 gefilterte Feld. Diese Abfrageergebnisse werden im Cache gespeichert, damit Looker bei der Eingabe in das Filtertextfeld schnell Vorschläge machen kann. Standardmäßig werden die Filtervorschläge sechs Stunden lang im Cache gespeichert. Um die Zeit zu minimieren, die Ihre Daten im Cache gespeichert sind, setzen Sie den Wert für suggest_persist_for auf einen kleineren Wert, z. B. 5 minutes.

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

In einem Explore-Fenster können Sie in der oberen rechten Ecke der Abfrage nachsehen, ob eine Abfrage aus dem Cache zurückgegeben wurde.

Wenn eine Abfrage aus dem Cache zurückgegeben wird, wird „aus dem Cache“ angezeigt. Andernfalls wird angezeigt, wie lange es gedauert hat, die Abfrage zurückzugeben.

Generieren neuer Ergebnisse aus der Datenbank erzwingen

Im Fenster Explore können Sie das Abrufen neuer Ergebnisse aus der Datenbank erzwingen. Nachdem Sie eine Abfrage (einschließlich Abfragen mit zusammengeführten Ergebnissen) ausgeführt haben, wählen Sie rechts oben im Bildschirm im Zahnradmenü Explore Actions die Option Cache leeren und aktualisieren aus.

Abfragen im Cache speichern und PDTs mit Datengruppen neu erstellen

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

Sie können eine Datengruppe verwenden, um den Neuerstellungstrigger für PDTs basierend darauf anzugeben, 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 verfallen, wenn Ihre PATs neu erstellt werden.

Alternativ können Sie eine Datengruppe verwenden, um den Trigger zur Neuerstellung von PDTs 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 sind, die seltener neu erstellt wird. In diesem Fall sollten Sie den Abfragecache häufiger zurücksetzen, als Ihre PAT neu erstellt wird.

Eine 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 das Caching und die Neuerstellung von PDTs benötigen.

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, um den Zweck und den Mechanismus der Datengruppe zu erklären.
  • max_cache_age: Gibt einen String an, der einen Zeitraum definiert. Wenn das Alter des Cache einer Abfrage den Zeitraum überschreitet, entwertet Looker den Cache. Wenn die Abfrage das nächste Mal ausgegeben wird, sendet Looker sie 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, wird die Datengruppe in einen ausgelösten Status versetzt.
  • interval_trigger: Gibt einen Zeitplan zum Auslösen der Datengruppe an, z. B. "24 hours".

Weitere Informationen zu diesen Parametern finden Sie auf der Dokumentationsseite Datengruppe.

Eine Datengruppe muss mindestens die Parameter max_cache_age, sql_trigger oder interval_trigger enthalten.

Hier ist ein Beispiel für eine Datengruppe, für die eine sql_trigger so eingerichtet ist, dass die PDT täglich neu erstellt wird. Darüber hinaus wird der Abfragecache alle zwei Stunden durch max_cache_age geleert, falls 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 Neuerstellungsauslöser für PDTs angeben

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

Hier ist ein Beispiel für eine PAT-Definition, die die Datengruppe customers_datagroup verwendet. Mit dieser Definition werden auch 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"]
  }
}

Wenn Sie kaskadierende PDTs haben, also PDTs, die von anderen PDTs abhängig sind, achten Sie darauf, keine inkompatiblen Caching-Richtlinien für Datengruppen anzugeben.

Bei Verbindungen mit Nutzerattributen zum Angeben der Verbindungsparameter müssen Sie mithilfe der PDT-Überschreibungsfelder eine separate Verbindung erstellen, wenn Sie eine der folgenden Aktionen ausführen möchten:

  • PATs im Modell verwenden
  • Mit einer Datengruppe einen Trigger für die Neuerstellung von PDTs definieren

Ohne die PAT-Überschreibungen können Sie weiterhin eine Datengruppe mit max_cache_age verwenden, um die Caching-Richtlinie für Explores zu definieren.

Weitere Informationen dazu, wie Datengruppen mit PDTs funktionieren, finden Sie auf der Dokumentationsseite Abgeleitete Tabellen in Looker.

Mit einer Datengruppe die Rücksetzung des Abfrage-Cache für Explores angeben

Wenn eine Datengruppe ausgelöst wird, erstellt der Looker-Regenerator die PDTs neu, die diese Datengruppe als Persistenzstrategie verwenden. Sobald 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 für die Datengruppe einen Zeitplan zum Zurücksetzen des Abfragecaches anpassen möchten. Mit dem Parameter max_cache_age können Sie den Abfragecache nach einem bestimmten Zeitplan löschen (zusätzlich zur automatischen Zurücksetzung des Abfragecaches, die Looker bei der Neuerstellung der PDTs der Datengruppe ausführt).

Um eine Richtlinie für das Abfrage-Caching 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 zum 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, wenn ein ETL aufgetreten ist. Selbst wenn dieser ETL-Prozess eine Zeit lang nicht erfolgt, gibt die max_cache_age der Datengruppe an, dass die im Cache gespeicherten Daten nur 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. Wir möchten jedoch nicht die Standard-Caching-Richtlinie des Modells für die Explores customer_facts und customer_background verwenden. Daher 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 Parameter persist_with. Daher wird die Standardrichtlinie für das Caching des Modells verwendet: 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.

Geplante Lieferungen mithilfe einer Datengruppe auslösen

Datengruppen können auch verwendet werden, um die Bereitstellung eines Dashboards oder eines Looks auszulösen. Mit dieser Option sendet Looker Ihre Daten nach Abschluss der Datengruppe, sodass der geplante Inhalt aktuell ist.

Admin-Bereich für Datengruppen verwenden

Wenn Sie die Looker-Administratorrolle haben, können Sie im Admin-Bereich auf der Seite Datengruppen die vorhandenen Datengruppen aufrufen. Sie können die Verbindung, das Modell und den aktuellen Status jeder Datengruppe sowie – sofern in LookML festgelegt – eine Bezeichnung und Beschreibung für jede Datengruppe sehen. Sie können auch den Cache einer Datengruppe zurücksetzen, die Datengruppe auslösen oder zur LookML der Datengruppe navigieren.

Abfragen mit persist_for im Cache speichern

Verwenden Sie den Parameter persist_for auf Modellebene oder Explore-Ebene, um das standardmäßige Cache-Aufbewahrungsintervall von Looker von einer Stunde zu ändern. Sie können Intervalle so klein wie 0 minutes und maximal 8760 hours (1 Jahr) festlegen.

Das Definieren von persist_for-Parametern kann schneller und einfacher sein, aber weniger robust sein als das Definieren von Datengruppen. Datengruppen werden aus folgenden Gründen anstelle von 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. Die Caching-Richtlinie wird dann an jedem Ort aktualisiert, an dem die Datengruppe verwendet wird.
  • Auf der Seite Datengruppen können Sie den gesamten Cache leeren, der mit einer Datengruppe verknüpft ist.