Abfragen zwischenspeichern

Looker reduziert die Belastung Ihrer Datenbank und erhöht die Leistung, indem zwischengespeicherte Ergebnisse früherer SQL-Abfragen verwendet werden, sofern verfügbar und gemäß Ihrer Cache-Richtlinie zulässig. Auf dieser Seite wird die Standard-Cache-Richtlinie von Looker beschrieben sowie die verfügbaren Optionen zum Ändern der Dauer von zwischengespeicherten Ergebnissen in Ihrer Looker-Instanz.

Wie Looker zwischengespeicherte Abfragen verwendet

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

  1. Wenn eine SQL-Abfrage über ein Explore, einen Look oder ein Dashboard ausgeführt wird, prüft Looker im Cache, ob bereits zwischengespeicherte Ergebnisse für diese Abfrage vorhanden sind. Zwischengespeicherte Ergebnisse werden nur verwendet, wenn alle Aspekte der Abfrage identisch sind, einschließlich Felder, Filter, Parameter und Zeilenlimits.

  2. Wenn zwischengespeicherte Ergebnisse gefunden werden, prüft Looker anhand der im LookML-Modell definierten Cache-Richtlinie, ob die zwischengespeicherten Ergebnisse abgelaufen sind. Wenn die zwischengespeicherten Ergebnisse nicht abgelaufen sind, verwendet Looker sie für die Abfrage.

  3. Wenn keine zwischengespeicherten Ergebnisse für die Abfrage gefunden werden oder wenn die zwischengespeicherten Ergebnisse abgelaufen sind, führt Looker die Abfrage in der Datenbank aus. Die neuen Abfrageergebnisse werden dann zwischengespeichert.

Die Standardrichtlinie für die Cache-Aufbewahrung beträgt eine Stunde. Im nächsten Abschnitt, Cache-Aufbewahrungsrichtlinien ändern, wird beschrieben, 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 erläutert.

Cache-Aufbewahrungsrichtlinien ändern

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

Der empfohlene Caching-Mechanismus ist die Verwendung eines datagroup-Parameters auf Modellebene. Mit Datengruppen können Sie die Cache-Aufbewahrungsrichtlinie eines Modells mit dem ETL-Zeitplan Ihrer Datenbank synchronisieren, indem Sie den Parameter sql_trigger verwenden und ein Cache-Ablaufintervall mit dem Parameter max_cache_age festlegen. Weitere Informationen finden Sie im Abschnitt Abfragen im Cache speichern und persistente abgeleitete Tabellen (PDTs) mit Datengruppen neu erstellen.

Alternativ können Sie den Parameter persist_for auf Modellebene oder 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 mehreren Gründen weniger robust als die Verwendung von Datengruppen, wie im Abschnitt Abfragen mit persist_for im Cache speichern erläutert.

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

  • Vor Ablauf des persist_for-Intervalls oder des max_cache_age-Intervalls der Datengruppe: Wenn die Abfrage noch einmal ausgeführt wird, ruft Looker Daten aus dem Cache ab.
  • Zum Zeitpunkt des Ablaufs des persist_for-Intervalls oder des max_cache_age-Intervalls der Datengruppe: Looker löscht Daten aus dem Cache.
  • Nach Ablauf des persist_for-Intervalls oder des max_cache_age-Intervalls 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.

Wichtig ist hier, 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 Daten anhand eines LRU-Algorithmus (Least Recently Used) entfernt. Es gibt keine Garantie, dass Daten mit abgelaufenen persist_for- oder max_cache_age-Intervallen sofort gelöscht werden.

Zeitraum minimieren, in dem sich Ihre Daten im Cache befinden

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

So minimieren Sie den Zeitraum, in dem Daten im Cache gespeichert werden:

  • Setzen 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 auf 0 minutes. Looker löscht den Cache, wenn das persist_for-Intervall abläuft oder wenn die Daten das max_cache_age-Intervall erreichen, das in der Datengruppe angegeben ist. Es ist nicht erforderlich, den persist_for Parameter von persistenten abgeleiteten Tabellen (PDTs) auf 0 minutes zu setzen, um die Menge der im Cache gespeicherten Daten zu minimieren. PDTs werden in die Datenbank selbst und nicht in den Cache geschrieben.
  • Setzen Sie den suggest_persist_for Parameter auf ein kurzes Intervall. Der Wert suggest_persist_for gibt an, wie lange Looker Filtersuggestionen im Cache behalten soll. Die Filtersuggestionen 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 Nutzer in das Filtertextfeld eingibt. Standardmäßig werden die Filtersuggestionen 6 Stunden lang im Cache gespeichert. Wenn Sie den Zeitraum minimieren möchten, in dem sich Ihre Daten im Cache befinden, setzen Sie den Wert suggest_persist_for auf einen niedrigeren Wert, 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. Sehen Sie sich dazu die Informationen neben der Schaltgabe Ausführen an, nachdem Sie eine Abfrage ausgeführt haben.

Wenn eine Abfrage aus dem 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.

Erzwingen, dass neue Ergebnisse aus der Datenbank generiert werden

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

Abfragen im Cache speichern und persistente abgeleitete Tabellen (PDTs) mit Datengruppen neu erstellen

Mit Datengruppen können Sie den ETL-Zeitplan (Extrahieren, Transformieren und Laden) Ihrer Datenbank mit der Cache-Richtlinie von Looker und dem Zeitplan für die Neuerstellung von persistenten abgeleiteten Tabellen (PDTs) koordinieren.

Mit einer Datengruppe können Sie den Auslöser für die Neuerstellung von PDTs basierend darauf angeben, wann neue Daten in Ihre Datenbank eingefügt werden. Anschließend können Sie dieselbe Datengruppe auf Ihr Explore oder Modell anwenden, damit zwischengespeicherte Ergebnisse auch ablaufen, wenn Ihre PDTs neu erstellt werden.

Alternativ können Sie mit einer Datengruppe den Auslöser für die Neuerstellung von PDTs von der maximalen Cache-Gültigkeitsdauer entkoppeln. Das kann nützlich sein, wenn ein Explore 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 sollte der Abfragecache möglicherweise häufiger zurückgesetzt werden, als die PDT neu erstellt wird.

Datengruppe definieren

Definieren Sie eine Datengruppe mit dem datagroup Parameter entweder in einer Modelldatei oder in einer eigenen LookML-Datei. Sie können mehrere Datengruppen definieren, wenn Sie unterschiedliche Richtlinien für das Caching und die Neuerstellung von persistenten abgeleiteten Tabellen (PDTs) für verschiedene Explores oder PDTs in Ihrem Projekt verwenden möchten.

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 der Mechanismus der Datengruppe erläutert werden können.
  • max_cache_age : Gibt einen String an, der einen Zeitraum definiert. Wenn das Alter des Cache einer Abfrage den Zeitraum überschreitet, macht Looker den Cache ungültig. Wenn die Abfrage das nächste Mal ausgeführt wird, sendet Looker sie an die Datenbank, um aktuelle 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, wechselt die Datengruppe in den ausgelösten Zustand.
  • interval_trigger : Gibt einen Zeitplan für das Auslösen der Datengruppe an, z. B. "24 hours".

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

Hier ist ein Beispiel für eine Datengruppe mit einem sql_trigger, der die PDT jeden Tag neu erstellt. Außerdem ist max_cache_age so festgelegt, dass der Abfragecache alle zwei Stunden gelöscht wird, 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:

Datengruppe verwenden, um einen Auslöser für die Neuerstellung von PDTs anzugeben

Wenn Sie einen Auslöser für die Neuerstellung von PDTs mit Datengruppen definieren möchten, erstellen Sie einen datagroup-Parameter mit dem Unterparameter sql_trigger oder interval_trigger. Weisen Sie die Datengruppe dann einzelnen PDTs mit dem datagroup_trigger Unterparameter in der derived_table Definition der PDT 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 datagroup_trigger verwendet.

Im Folgenden sehen Sie ein Beispiel für eine PDT-Definition, die die Datengruppe customers_datagroup verwendet. Diese Definition fügt auch mehrere Indexe hinzu, sowohl für customer_id als auch für first_order_date. 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 Verwendung von Datengruppen mit PDTs finden Sie auf der Dokumentationsseite Abgeleitete Tabellen in Looker.

Datengruppe verwenden, um das Zurücksetzen des Abfragecaches für Explores anzugeben

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, löscht Looker den Cache für Explores, die die neu erstellten PDTs der Datengruppe verwenden. Sie können der Datengruppendefinition den max_cache_age Parameter hinzufügen, wenn Sie einen Zeitplan für das 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. Dies erfolgt zusätzlich zum automatischen Zurücksetzen des Abfragecaches, das Looker ausführt, wenn die PDTs der Datengruppe neu erstellt werden.

Wenn Sie eine Cache-Richtlinie für Abfragen mit Datengruppen definieren möchten, erstellen Sie einen datagroup-Parameter mit dem max_cache_age-Unterparameter.

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

In den folgenden Beispielen wird eine Datengruppe namens orders_datagroup gezeigt, die in einer Modelldatei definiert ist. Die Datengruppe hat einen Parameter sql_trigger, der angibt, dass die Abfrage select max(id) from my_tablename verwendet wird, um zu erkennen, wann ein ETL-Prozess stattgefunden hat. Auch wenn dieser ETL-Prozess eine Weile nicht stattfindet, gibt max_cache_age der Datengruppe an, dass die zwischengespeicherten Daten nur maximal 24 Stunden lang verwendet werden.

Der Parameter persist_with des Modells verweist auf die Cache-Richtlinie orders_datagroup. Das bedeutet, dass dies die Standard-Cache-Richtlinie für alle Explores im Modell ist. Wir möchten jedoch nicht die Standard-Cache-Richtlinie des Modells für die Explores customer_facts und customer_background verwenden. Daher können wir den Parameter persist_with hinzufügen, um eine andere Cache-Richtlinie für diese beiden Explores anzugeben. Die Explores orders und orders_facts haben keinen Parameter persist_with. Daher wird die Standard-Cache-Richtlinie 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, wird eine Validierungswarnung angezeigt und persist_with verwendet.

Datengruppe verwenden, um geplante Bereitstellungen auszulösen

Datengruppen können auch verwendet werden, um die Bereitstellung eines Dashboards oder eines Looks auszulösen. Mit dieser Option sendet Looker Ihre Daten, wenn die Datengruppe abgeschlossen ist, damit die geplanten Inhalte auf dem neuesten Stand sind.

Bereich Admin für Datengruppen verwenden

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

Abfragen mit persist_for im Cache speichern

Verwenden Sie den persist_for Parameter auf Modellebene oder Explore-Ebene, um das Standardintervall für die Cache-Aufbewahrung von Looker von einer Stunde zu ändern. Sie können Intervalle von 0 minutes bis 8760 hours (1 Jahr) oder länger festlegen.

Das Definieren von persist_for Parametern kann schneller und einfacher sein, aber weniger robust 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 max_cache_age einer Datengruppe aktualisieren können und die Cache-Richtlinie wird an allen Stellen aktualisiert, an denen die Datengruppe verwendet wird.
  • Sie können auf der Seite „Datengruppen“ den gesamten Cache löschen, der mit einer Datengruppe verknüpft ist.