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 werden die verfügbaren Optionen zum Ändern der Dauer von zwischengespeicherten Ergebnissen in Ihrer Looker-Instanz erläutert.
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 zwischengespeicherte Ergebnisse für diese Abfrage vorhanden sind. Ergebnisse im Cache 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 sie 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 für die 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 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 beschrieben.
Cache-Aufbewahrungsrichtlinien ändern
Sie können Richtlinien für die Cache-Aufbewahrung auf LookML-Explore-Ebene und auf LookML-Modellebene festlegen.
Der empfohlene Caching-Mechanismus ist die Verwendung eines datagroup
-Parameters auf Modellebene. Mit Datengruppen können Sie die Richtlinie zur Cache-Aufbewahrung 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 persistenten abgeleiteten Tabellen (PDTs) mit Datengruppen.
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 beschrieben.
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. - Zu dem Zeitpunkt, an dem das
persist_for
-Intervall oder dasmax_cache_age
-Intervall der Datengruppe abläuft: Looker löscht 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.
Wichtig 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 Daten anhand eines LRU-Algorithmus (Least Recently Used, am wenigsten zuletzt verwendet) entfernt. Es gibt keine Garantie, dass Daten mit abgelaufenen persist_for
- oder max_cache_age
-Intervallen sofort gelöscht werden.
Zeit minimieren, 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 zwischengespeicherte Daten bis zu 10 Minuten lang gespeichert werden. Alle Kundendaten, die im Festplatten-Cache gespeichert werden, sind mit dem Advanced Encryption Standard (AES) 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 einen 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 wenn die Daten das in der zugehörigen Datengruppe angegebenemax_cache_age
-Intervall erreichen. Es ist nicht erforderlich, denpersist_for
-Parameter von persistenten abgeleiteten Tabellen (Persistent Derived Tables, 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 Looker Filtersuggestionen im Cache behalten 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 bereitstellen kann, während der Nutzer Text in das Filtertextfeld eingibt. Standardmäßig werden die Filtervorschläge 6 Stunden lang im Cache gespeichert. Um die Zeit zu minimieren, in der Ihre Daten im Cache gespeichert werden, legen Sie den Wertsuggest_persist_for
auf einen niedrigeren Wert wie5 minutes
fest.
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 Schaltfläche Ausführen an, nachdem Sie eine Abfrage ausgeführt haben.
Wenn eine Anfrage 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ü Aktionen für explorative Datenanalyse 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 Caching-Richtlinie von Looker und dem Zeitplan für die Neuerstellung von persistenten abgeleiteten Tabellen (PDTs) koordinieren.
Mit einer Datengruppe können Sie den Trigger für die Neuerstellung von PDTs basierend darauf festlegen, wann neue Daten in Ihre Datenbank eingefügt werden. Anschließend können Sie dieselbe Datengruppe auf Ihr Explore oder Modell anwenden, damit auch die im Cache gespeicherten Ergebnisse ablaufen, wenn Ihre PDTs neu erstellt werden.
Alternativ können Sie eine Datengruppe verwenden, um den Trigger für die Neuerstellung von PDTs von Ihrem maximalen Cache-Alter zu entkoppeln. Das kann nützlich sein, wenn Sie einen Explore haben, der 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 soll der Abfragecache möglicherweise häufiger zurückgesetzt werden, 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 unterschiedliche Richtlinien für das Caching und die Neuerstellung von persistenten abgeleiteten Tabellen (Persistent Derived Tables, 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 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, wird der Cache in Looker 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 „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
, den Parameter sql_trigger
oder den Parameter interval_trigger
enthalten.
Hier ist ein Beispiel für eine Datengruppe, in der sql_trigger
so eingerichtet ist, dass die PDT jeden Tag neu erstellt wird. Außerdem ist max_cache_age
so konfiguriert, dass der Abfragecache alle zwei Stunden geleert wird, falls PDTs in Explores mit anderen Daten verknüpft werden, 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 abgeleiteten Tabellen zuweisen:
- Um die Datengruppe einem PDT zuzuweisen, verwenden Sie den Parameter
datagroup_trigger
unter dem Parameterderived_table
. Ein Beispiel finden Sie auf dieser Seite im Abschnitt Datengruppe zum Angeben eines Triggers für die Neuerstellung von PDTs verwenden. - 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 Datengruppe zum Festlegen des Zurücksetzens des Abfrage-Cache für Explores verwenden.
Datengruppe zum Angeben eines Triggers für die Neuerstellung von PDTs verwenden
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 mithilfe des Unterparameters datagroup_trigger
in der derived_table
-Definition des 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.
Im Folgenden sehen Sie ein Beispiel für eine PDT-Definition, in der die Datengruppe customers_datagroup
verwendet wird. 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"]
}
}
Weitere Informationen zur Verwendung von Datengruppen mit PDTs finden Sie auf der Dokumentationsseite Abgeleitete Tabellen in Looker.
Datengruppe zum Festlegen des Zurücksetzens des Abfragecaches für Explores verwenden
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, in denen die neu erstellten PDTs der Datengruppe verwendet werden. Sie können den Parameter max_cache_age
in die Definition der Datengruppe einfügen, um einen benutzerdefinierten Zeitplan für das Zurücksetzen des Abfrage-Cache für die Datengruppe zu erstellen. Mit dem Parameter max_cache_age
können Sie den Abfragecache nach einem bestimmten Zeitplan leeren. 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 Richtlinie für die Zwischenspeicherung von Abfragen mit Datengruppen definieren möchten, erstellen Sie einen datagroup
-Parameter mit dem Unterparameter max_cache_age
.
Wenn Sie eine Datengruppe angeben möchten, die für das Zurücksetzen des Abfragecaches für Explores verwendet werden soll, verwenden Sie den Parameter persist_with
:
- Wenn Sie die Datengruppe als Standard für alle Explores in einem Modell zuweisen 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.
Im folgenden Beispiel 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 die Abfrage select max(id) from my_tablename
verwendet wird, um zu erkennen, wann ein ETL-Vorgang stattgefunden hat. Auch wenn der ETL-Prozess eine Weile dauert, wird durch max_cache_age
der Datengruppe festgelegt, dass die im Cache gespeicherten Daten nur maximal 24 Stunden lang verwendet werden.
Der Parameter persist_with
des Modells verweist auf die orders_datagroup
-Richtlinie für die Zwischenspeicherung. Das ist also die Standardrichtlinie für die Zwischenspeicherung für alle Explores im Modell. 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 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.
Datengruppe zum Auslösen geplanter Zustellungen verwenden
Datengruppen können auch verwendet werden, um die Zustellung eines Dashboards oder eines Looks auszulösen. Bei dieser Option werden Ihre Daten von Looker gesendet, wenn die Datengruppe abgeschlossen ist. So sind die geplanten Inhalte immer auf dem neuesten Stand.
Admin-Bereich für Datengruppen verwenden
Wenn Sie die Looker-Administratorrolle haben, können Sie die vorhandenen Datengruppen auf der Seite Datengruppen im Bereich Admin ansehen. Sie können 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 sehen. 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
zwischenspeichern
Mit dem Parameter persist_for
auf Modellebene oder Explore-Ebene können Sie das standardmäßige Cache-Aufbewahrungsintervall von Looker von einer Stunde ändern. Sie können Intervalle von 0 minutes
bis zu 8760 hours
(1 Jahr) oder höher 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 die
max_cache_age
einer Datengruppe aktualisieren können und die Richtlinie für die Zwischenspeicherung wird überall dort aktualisiert, wo die Datengruppe verwendet wird. - Sie können den gesamten Cache, der mit einer Datengruppe verknüpft ist, auf der Seite Datengruppen löschen.