Abfrageergebniscache
Kusto enthält einen Cache für Abfrageergebnisse. Sie können beim Ausgeben einer Abfrage zwischengespeicherte Ergebnisse abrufen. Sie erzielen eine bessere Abfrageleistung und einen geringeren Ressourcenverbrauch, wenn die Ergebnisse Ihrer Abfrage vom Cache zurückgegeben werden können. Diese Leistung geht jedoch auf Kosten einer gewissen "Veraltung" in den Ergebnissen.
Verwenden des Caches
Legen Sie die query_results_cache_max_age
Option als Teil der Abfrage fest, um den Cache der Abfrageergebnisse zu verwenden. Sie können diese Option im Abfragetext oder als Clientanforderungseigenschaft festlegen. Beispiel:
set query_results_cache_max_age = time(5m);
GithubEvent
| where CreatedAt > ago(180d)
| summarize arg_max(CreatedAt, Type) by Id
Der Optionswert ist ein timespan
Wert, der das maximale "Alter" des Ergebniscaches angibt, gemessen an der Startzeit der Abfrage. Über den festgelegten Zeitraum hinaus ist der Cacheeintrag veraltet und wird nicht mehr verwendet. Das Festlegen eines Werts von 0 entspricht nicht dem Festlegen der Option.
Kompatibilität zwischen Abfragen
Identische Abfragen
Der Cache der Abfrageergebnisse gibt ergebnisse nur für Abfragen zurück, die als "identisch" mit einer vorherigen zwischengespeicherten Abfrage gelten. Zwei Abfragen gelten als identisch, wenn alle der folgenden Bedingungen erfüllt sind:
- Die beiden Abfragen haben dieselbe Darstellung (wie UTF-8-Zeichenfolgen).
- Die beiden Abfragen werden an dieselbe Datenbank gestellt.
- Die beiden Abfragen verwenden dieselben Clientanforderungseigenschaften. Die folgenden Eigenschaften werden zu Zwischenspeicherungszwecken ignoriert:
Inkompatible Abfragen
Die Abfrageergebnisse werden nicht zwischengespeichert, wenn eine der folgenden Bedingungen zutrifft:
- Die Abfrage verweist auf eine Tabelle, in der die Richtlinie RestrictedViewAccess aktiviert ist.
- Die Abfrage verweist auf eine Tabelle, in der die RowLevelSecurity-Richtlinie aktiviert ist.
- Die Abfrage verwendet eine der folgenden Funktionen:
- Die Abfrage greift auf eine externe Tabelle oder externe Daten zu.
- Die Abfrage verwendet den Auswerte-Plug-In-Operator .
Kein gültiger Cacheeintrag
Wenn ein zwischengespeichertes Ergebnis, das die Zeiteinschränkungen erfüllt, nicht gefunden werden konnte oder kein zwischengespeichertes Ergebnis einer "identischen" Abfrage im Cache vorhanden ist, wird die Abfrage ausgeführt und ihre Ergebnisse zwischengespeichert, sofern:
- Die Abfrageausführung wird erfolgreich abgeschlossen, und
- Die Größe der Abfrageergebnisse überschreitet nicht 16 MB.
Ergebnisse aus dem Cache
Wie gibt der Dienst an, dass die Abfrageergebnisse aus dem Cache bereitgestellt werden?
Beim Antworten auf eine Abfrage sendet Kusto eine weitere ExtendedProperties-Antworttabelle , die eine Key
Spalte und eine Value
Spalte enthält.
Bei zwischengespeicherten Abfrageergebnissen wird eine weitere Zeile an diese Tabelle angefügt:
- Die Spalte der
Key
Zeile enthält die Zeichenfolge.ServerCache
- Die Spalte der
Value
Zeile enthält einen Eigenschaftenbehälter mit zwei Feldern:OriginalClientRequestId
– Gibt die ClientRequestId der ursprünglichen Anforderung an.OriginalStartedOn
– Gibt die Startzeit der ursprünglichen Anforderung an.
Distribution
Der Cache wird nicht von Clusterknoten freigegeben. Jeder Knoten verfügt über einen dedizierten Cache in seinem eigenen privaten Speicher. Wenn zwei identische Abfragen auf unterschiedlichen Knoten landen, wird die Abfrage ausgeführt und auf beiden Knoten zwischengespeichert. Dieser Prozess kann auftreten, wenn eine schwache Konsistenz verwendet wird. Durch Festlegen der Abfragekonsistenz auf affinitizedweakconsistency
können Sie schwache Konsistenzabfragen, die identisch sind, auf demselben Abfragekopf landen und so die Trefferrate für den Cache erhöhen.
Verwaltung
Die folgenden Verwaltungs- und Beobachtbarkeitsbefehle werden unterstützt:
- Cache für Abfrageergebnisse anzeigen: Gibt Statistiken im Zusammenhang mit dem Cache für Abfrageergebnisse zurück.
- Cache für Abfrageergebnisse löschen: Löscht den Cache der Abfrageergebnisse.
- Abfragecacheeintrag aktualisieren: Ein bestimmter Abfragecacheeintrag kann mithilfe der
query_results_cache_force_refresh
Clientanforderungseigenschaft (OptionQueryResultsCacheForceRefresh) aktualisiert werden. Wenn auftrue
festgelegt ist, erzwingt dieser Befehl, dass der Cache für Abfrageergebnisse auch aktualisiert wird, wenn ein vorhandener Cache vorhanden ist. Dieser Prozess ist in Szenarien nützlich, in denen abfragende Ergebnisse verfügbar sein müssen. Diese Eigenschaft muss in Kombination mit "query_results_cache_max_age" verwendet und über das ClientRequestProperties-Objekt gesendet werden. Die -Eigenschaft kann nicht Teil einer "set"-Anweisung sein.
Capacity
Die Cachekapazität ist derzeit auf 1 GB pro Clusterknoten festgelegt. Die Räumungsrichtlinie ist LRU.
Abfrageergebniscache auf Shardebene
Der Cache der Abfrageergebnisse ist effektiv, wenn dieselbe Abfrage mehrmals in schneller Folge ausgeführt wird und leicht alte Daten zurückgegeben werden können. Einige Szenarien, z. B. ein Live-Dashboard, erfordern jedoch die aktuellsten Ergebnisse.
Beispielsweise kann eine Abfrage, die alle 10 Sekunden ausgeführt wird und die letzte 1 Stunde umfasst, vom Zwischenspeichern von Abfrageergebnissen auf Speicherebene (Shard) profitieren.
Der Abfrageergebniscache auf Shardebene wird automatisch aktiviert, wenn der Query results cache
verwendet wird. Da sie denselben Cache wie Query results cache
verwendet, gelten dieselben Kapazitäts- und Entfernungsrichtlinien.
Syntax
set
query_results_cache_per_shard
; Abfrage
Hinweis
Diese Option kann im Abfragetext oder als Clientanforderungseigenschaft festgelegt werden.
Erfahren Sie mehr über Syntaxkonventionen.
Beispiel
set query_results_cache_per_shard;
GithubEvent
| where CreatedAt > ago(180d)
| summarize arg_max(CreatedAt, Type) by Id
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für