Looker reduziert die Belastung Ihrer Datenbank und erhöht die Leistung, indem zwischengespeicherte Ergebnisse früherer SQL-Abfragen verwendet werden (sofern verfügbar), die gemäß Ihrer Cache-Richtlinie zulässig sind. Auf dieser Seite wird die Standard-Caching-Richtlinie von Looker beschrieben. Außerdem finden Sie hier Informationen zu den verfügbaren Optionen zum Ändern der Dauer der im Cache gespeicherten Ergebnisse in Ihrer Looker-Instanz.
Wie Looker im Cache gespeicherte Abfragen verwendet
Bei SQL-Abfragen funktioniert der Caching-Mechanismus in Looker so:
Wenn eine SQL-Abfrage über ein Explore, einen Look oder ein Dashboard ausgeführt wird, prüft Looker den Cache, um festzustellen, ob bereits Ergebnisse für diese Abfrage zwischengespeichert sind. Gecachte Ergebnisse werden nur verwendet, wenn alle Aspekte der Abfrage gleich sind, einschließlich Felder, Filter, Parameter und Zeilenlimits.
Wenn zwischengespeicherte Ergebnisse gefunden werden, prüft Looker anhand der im LookML-Modell definierten Caching-Richtlinie, ob die zwischengespeicherten Ergebnisse abgelaufen sind. Wenn die zwischengespeicherten Ergebnisse nicht abgelaufen sind, verwendet Looker diese für die Abfrage.
Wenn für die Abfrage keine zwischengespeicherten Ergebnisse gefunden werden oder die zwischengespeicherten Ergebnisse abgelaufen sind, führt Looker die Abfrage in der Datenbank aus. Die neuen Abfrageergebnisse werden dann im Cache gespeichert.
Die Standardrichtlinie für die Cache-Aufbewahrung beträgt eine Stunde. Im nächsten Abschnitt, Cache-Aufbewahrungsrichtlinien ändern, erfahren Sie, wie Sie diesen Zeitraum verkürzen oder verlängern können. Außerdem werden Optionen zum Synchronisieren der Cache-Aufbewahrungsrichtlinie mit dem ETL-Prozess (Extract, Transform, Load) Ihrer Datenbank beschrieben.
Cache-Aufbewahrungsrichtlinien ändern
Sie können Cache-Aufbewahrungsrichtlinien auf LookML-Explore-Ebene und auf LookML-Modellebene angeben.
Der empfohlene Caching-Mechanismus besteht darin, einen datagroup
-Parameter auf Modellebene zu verwenden. Mit Datengruppen können Sie die Cache-Aufbewahrungsrichtlinie eines Modells mit dem ETL-Zeitplan Ihrer Datenbank synchronisieren. Verwenden Sie dazu den Parameter sql_trigger
und legen Sie mit dem Parameter max_cache_age
ein Cache-Ablaufintervall fest. Weitere Informationen finden Sie im Abschnitt Zwischenspeichern von Abfragen und Neuerstellen von PDTs mit Datengruppen.
Für einen einfacheren Ansatz können Sie stattdessen den Parameter persist_for
auf Modellebene oder Explore-Ebene verwenden. So können Sie mit dem Parameter persist_for
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 im Cache speichern mit persist_for 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 desmax_cache_age
-Intervalls der Datengruppe: Wenn die Abfrage noch einmal ausgeführt wird, ruft Looker Daten aus dem Cache ab. - Wenn das
persist_for
-Intervall oder dasmax_cache_age
-Intervall der Datengruppe abläuft, löscht Looker die Daten aus dem Cache. - Nach Ablauf des Intervalls
persist_for
oder des Intervallsmax_cache_age
der Datengruppe: Wenn die Abfrage noch einmal ausgeführt wird, ruft Looker die Daten direkt aus der Datenbank ab und setzt das Intervallpersist_for
odermax_cache_age
zurück.
Ein wichtiger Punkt dabei 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 Daten anhand eines LRU-Algorithmus (Least Recently Used) entfernt. Es kann nicht garantiert werden, dass Daten mit abgelaufenen persist_for
- oder max_cache_age
-Intervallen gleichzeitig 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 Daten bis zu 10 Minuten lang gespeichert werden. Alle Kundendaten, die im Laufwerkcache gespeichert werden, werden mit AES (Advanced Encryption Standard) verschlüsselt.
So minimieren Sie die Zeit, in der Daten im Cache gespeichert werden:
- Legen Sie für alle
persist_for
-Parameter (für ein Modell oder ein Explore) odermax_cache_age
-Parameter (für eine Datengruppe) den Wert auf0 minutes
fest. Looker löscht den Cache, wenn daspersist_for
-Intervall abläuft oder die Daten dasmax_cache_age
-Intervall erreichen, das in der Datengruppe angegeben ist. Es ist nicht erforderlich, denpersist_for
-Parameter von PDTs auf0 minutes
festzulegen, um die Menge der im Cache gespeicherten Daten zu minimieren. 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 Wertsuggest_persist_for
gibt an, wie lange Filtervorschläge in Looker im Cache gespeichert bleiben sollen. Die Filtervorschläge basieren auf einer Abfrage der Werte für das gefilterte Feld. Diese Abfrageergebnisse werden im Cache gespeichert, damit Looker schnell Vorschläge machen kann, während der Nutzer im Filtertextfeld tippt. Standardmäßig werden die Filtervorschläge 6 Stunden lang im Cache gespeichert. Um die Zeit zu minimieren, in der Ihre Daten im Cache gespeichert sind, legen Sie einen niedrigeren Wert fürsuggest_persist_for
fest, z. B.5 minutes
.
Prüfen, ob eine Abfrage aus dem Cache zurückgegeben wurde
In einem Explore-Fenster können Sie nach dem Ausführen einer Abfrage anhand der Informationen neben der Schaltfläche Ausführen feststellen, ob die Abfrage aus dem Cache zurückgegeben wurde.
Wenn eine Abfrage aus dem Cache zurückgegeben wird, wird der Text „aus 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 Actions (Explore-Aktionen) die Option Clear Cache & Refresh (Cache leeren und aktualisieren) aus.
Abfragen im Cache speichern und PDTs mit Datengruppen neu erstellen
Mithilfe von Datengruppen können Sie den ETL-Zeitplan (Extrahieren, Transformieren und Laden) Ihrer Datenbank mit der Caching-Richtlinie und dem Zeitplan für die Neuerstellung von PDTs in Looker koordinieren.
Mit einer Datengruppe können Sie den Neuerstellungstrigger für PDTs angeben, der ausgelöst wird, wenn Ihrer Datenbank neue Daten hinzugefügt werden. Anschließend können Sie dieselbe Datengruppe auf Ihr exploratives Datenanalysetool oder Modell anwenden, damit die im Cache gespeicherten Ergebnisse auch ablaufen, wenn Ihre PDTs neu erstellt werden.
Alternativ können Sie mit einer Datengruppe den Trigger für die Neuerstellung von PDTs vom maximalen Cache-Alter entkoppeln. Das kann nützlich sein, wenn ein Explore auf Daten basiert, die sehr häufig aktualisiert werden, und mit einer PDT verknüpft ist, die seltener neu erstellt wird. In diesem Fall sollten Sie den Abfragecache häufiger zurücksetzen, als der 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 Caching- und PDT-Neuerstellungsrichtlinien festlegen 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 Zweck und Mechanismus der Datengruppe erläutert werden können.max_cache_age
: Gibt einen String an, der einen Zeitraum definiert. Wenn das Alter des Caches 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 Status „Triggered“ (Ausgelöst).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
, sql_trigger
oder interval_trigger
enthalten.
Hier ist ein Beispiel für eine Datengruppe, für die eine sql_trigger
eingerichtet ist, um die PDT jeden Tag neu zu erstellen. Außerdem wird der Abfragecache alle zwei Stunden geleert, falls in Explores PDTs mit anderen Daten zusammengeführt werden, die häufiger als einmal täglich aktualisiert werden.max_cache_age
datagroup: customers_datagroup {
sql_trigger: SELECT DATE(NOW());;
max_cache_age: "2 hours"
}
Nachdem Sie die Datengruppe definiert haben, können Sie sie explorativen Datenanalysen und PDTs zuweisen:
- Wenn Sie die Datengruppe einem PDT zuweisen möchten, verwenden Sie den Parameter
datagroup_trigger
unter dem Parameterderived_table
. Ein Beispiel finden Sie auf dieser Seite im Abschnitt Mit einer Datengruppe einen Trigger für die Neuerstellung von PDTs angeben. - Wenn Sie die Datengruppe einem Explore zuweisen möchten, verwenden Sie den Parameter
persist_with
auf Modellebene oder Explore-Ebene. Ein Beispiel finden Sie auf dieser Seite im Abschnitt Mit einer Datengruppe das Zurücksetzen des Abfragecaches für Explores angeben.
Mit einer Datengruppe einen Trigger für die Neuerstellung von PDTs angeben
Wenn Sie einen Trigger 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 zu, indem Sie den Unterparameter datagroup_trigger
in der derived_table
-Definition der PDT verwenden. 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, erhalten Sie in der Looker IDE eine Warnung und es wird nur die datagroup_trigger
verwendet.
Im folgenden Beispiel wird eine PDT-Definition mit der Datengruppe customers_datagroup
verwendet. Mit dieser Definition werden auch mehrere Indexe hinzugefügt, sowohl für customer_id
als auch für first_order_date
. Weitere Informationen zum Definieren von PDTs finden Sie auf der Seite 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.
Mit einer Datengruppe das Zurücksetzen des Abfragecaches 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, löscht 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 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 zusätzlich zum automatischen Zurücksetzen durch Looker, das beim Neuaufbau der PDTs der Datengruppe ausgeführt wird, nach einem bestimmten Zeitplan leeren.
Wenn Sie eine Richtlinie für die Abfrage-Zwischenspeicherung mit Datengruppen definieren möchten, erstellen Sie einen datagroup
-Parameter mit dem Unterparameter max_cache_age
.
Verwenden Sie den Parameter persist_with
, um eine Datengruppe für das Zurücksetzen des Abfragecaches in Explores anzugeben:
- Wenn Sie die Datengruppe als Standard für alle Explores in einem Modell festlegen möchten, verwenden Sie den Parameter
persist_with
auf Modellebene (in einer Modelldatei). - Wenn Sie die Datengruppe einzelnen Explores zuweisen möchten, verwenden Sie den Parameter
persist_with
unter einemexplore
-Parameter.
In den folgenden Beispielen wird eine Datengruppe mit dem Namen orders_datagroup
gezeigt, die in einer Modelldatei definiert ist. Die Datengruppe hat einen sql_trigger
-Parameter, der angibt, dass mit der Abfrage select max(id) from my_tablename
erkannt werden soll, wann eine ETL-Datenübertragung stattgefunden hat. Auch wenn diese ETL-Datenübertragung noch etwas auf sich warten lässt, wird in max_cache_age
der Datengruppe angegeben, dass die im Cache gespeicherten Daten nur für maximal 24 Stunden verwendet werden.
Der Parameter persist_with
des Modells verweist auf die Zwischenspeicherungsrichtlinie orders_datagroup
. Das bedeutet, dass dies die Standard-Zwischenspeicherungsrichtlinie 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 explorativen Datenanalysen vom Typ orders
und orders_facts
haben keinen persist_with
-Parameter. Daher wird die Standard-Caching-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, erhalten Sie eine Validierungswarnung und persist_with
wird verwendet.
Geplante Übermittlungen mit einer Datengruppe auslösen
Mit Datengruppen können Sie auch die Übermittlung eines Dashboards oder eines Look auslösen. Bei dieser Option sendet Looker Ihre Daten, sobald die Datengruppe abgeschlossen ist, damit die geplanten Inhalte auf dem neuesten Stand sind.
Bereich Verwaltung für Datengruppen verwenden
Wenn Sie die Rolle „Looker-Administrator“ haben, können Sie die vorhandenen Datengruppen auf der Seite Datengruppen im Bereich Verwaltung aufrufen. Sie sehen die Verbindung, das Modell und den aktuellen Status jeder Datengruppe sowie – sofern in der 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 die LookML der Datengruppe aufrufen.
Abfragen mit persist_for
zwischenspeichern
Verwenden Sie den Parameter persist_for
auf Modellebene oder Explore-Ebene, um das Standard-Cache-Aufbewahrungsintervall von Looker von einer Stunde zu ändern. Sie können Intervalle von 0 minutes
bis 8760 hours
(1 Jahr) oder länger festlegen.
Die Definition von persist_for
-Parametern kann schneller und einfacher, aber weniger robust sein als die Definition von Datengruppen. Aus folgenden Gründen empfehlen wir Datagroups anstelle von persist_for
:
- Datengruppen können mit dem ETL-Prozess Ihrer Datenbank synchronisiert werden.
- Sie können Datengruppen für mehrere Modelle und Explores wiederverwenden. Das bedeutet, dass Sie die
max_cache_age
einer Datengruppe aktualisieren können. Dadurch wird die Richtlinie für die Zwischenspeicherung an allen Stellen aktualisiert, an denen die Datengruppe verwendet wird. - Auf der Seite Datengruppen können Sie den gesamten Cache löschen, der mit einer Datengruppe verknüpft ist.