Cache voor queryresultaten
Van toepassing op: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel-
Kusto bevat een cache met queryresultaten. U kunt ervoor kiezen om resultaten in de cache op te halen bij het uitgeven van een query. U ervaart betere queryprestaties en een lager resourceverbruik als de resultaten van uw query kunnen worden geretourneerd door de cache. Deze prestaties gaan echter ten koste van enkele 'veroudering' in de resultaten.
De cache gebruiken
Stel de optie query_results_cache_max_age
in als onderdeel van de query om de cache met queryresultaten te gebruiken. U kunt deze optie instellen in de querytekst of als een eigenschap van een clientaanvraag. Bijvoorbeeld:
set query_results_cache_max_age = time(5m);
GithubEvent
| where CreatedAt > ago(180d)
| summarize arg_max(CreatedAt, Type) by Id
De optiewaarde is een timespan
die de maximale 'leeftijd' van de resultatencache aangeeft, gemeten vanaf de begintijd van de query. Buiten de ingestelde periode is de cachevermelding verouderd en wordt deze niet opnieuw gebruikt. Het instellen van een waarde van 0 is gelijk aan het niet instellen van de optie.
Compatibiliteit tussen query's
Identieke query's
De cache met queryresultaten retourneert alleen resultaten voor query's die als 'identiek' worden beschouwd als een eerdere query in de cache. Twee query's worden als identiek beschouwd als aan alle volgende voorwaarden wordt voldaan:
- De twee query's hebben dezelfde weergave (als UTF-8-tekenreeksen).
- De twee query's worden uitgevoerd in dezelfde database.
- De twee query's delen dezelfde eigenschappen van clientaanvragen. De volgende eigenschappen worden genegeerd voor cachingdoeleinden:
- ClientRequestId
- Toepassing
- Gebruiker
Incompatibele query's
De queryresultaten worden niet in de cache opgeslagen als aan een van de volgende voorwaarden wordt voldaan:
- De query verwijst naar een tabel waarvoor het beleid RestrictedViewAccess is ingeschakeld.
- De query verwijst naar een tabel waarvoor het beleid RowLevelSecurity is ingeschakeld.
- De query maakt gebruik van een van de volgende functies:
- De query opent een externe tabel of een externe gegevens.
- De query maakt gebruik van de de invoegtoepassing evalueren operator.
Geen geldige cachevermelding
Als een resultaat in de cache voldoet aan de tijdsbeperkingen niet kunnen worden gevonden of er geen resultaat in de cache is van een identieke query in de cache, wordt de query uitgevoerd en worden de resultaten in de cache opgeslagen, zolang:
- De uitvoering van de query is voltooid en
- De grootte van de queryresultaten is niet groter dan 16 MB.
Resultaten van de cache
Hoe geeft de service aan dat de queryresultaten worden geleverd vanuit de cache?
Wanneer u op een query reageert, verzendt Kusto nog een ExtendedProperties antwoordtabel met een Key
kolom en een Value
kolom.
Queryresultaten in de cache hebben een andere rij toegevoegd aan die tabel:
- De
Key
kolom van de rij bevat de tekenreeksServerCache
- De
Value
kolom van de rij bevat een eigenschappenverzameling met twee velden:-
OriginalClientRequestId
- Hiermee geeft u de ClientRequestId-van de oorspronkelijke aanvraag op. -
OriginalStartedOn
- Hiermee geeft u de begintijd van de uitvoering van de oorspronkelijke aanvraag op.
-
Queryconsistentie
Query's die gebruikmaken van zwakke consistentie kunnen worden verwerkt op verschillende clusterknooppunten. De cache wordt niet gedeeld door clusterknooppunten. Elk knooppunt heeft een toegewezen cache in een eigen privéopslag. Als er dus twee identieke query's op verschillende knooppunten terechtkomen, wordt de query uitgevoerd en in de cache op beide knooppunten opgeslagen. Door queryconsistentie in te stellen op affinitizedweakconsistency
, kunt u ervoor zorgen dat zwakke consistentiequery's die identiek zijn op hetzelfde queryhoofd, en zo de hitfrequentie van de cache verhogen. Dit is niet relevant bij het gebruik van sterke consistentie.
Beheer
De volgende opdrachten voor beheer en waarneembaarheid worden ondersteund:
- Cache van queryresultaten weergeven: retourneert statistieken met betrekking tot de cache met queryresultaten.
- Cache van queryresultaten wissen: hiermee wordt de cache met queryresultaten gewist.
- Vermelding van querycache vernieuwen: een specifieke querycachevermelding kan worden vernieuwd met behulp van
query_results_cache_force_refresh
(OptionQueryResultsCacheForceRefresh)clientaanvraageigenschap. Als deze optie is ingesteld optrue
, wordt met deze opdracht afgedwongen dat de cache met queryresultaten ook wordt vernieuwd wanneer er een bestaande cache aanwezig is. Dit proces is handig in scenario's waarvoor queryresultaten beschikbaar moeten zijn voor het uitvoeren van query's. Deze eigenschap moet worden gebruikt in combinatie met 'query_results_cache_max_age' en verzonden via clientRequestProperties-object. De eigenschap kan geen deel uitmaken van een set-instructie.
Capaciteit
De cachecapaciteit is momenteel vastgesteld op 1 GB per clusterknooppunt. Het verwijderingsbeleid is LRU.
Cache voor queryresultaten op Shard-niveau
U kunt de cache voor queryresultaten op shardniveau gebruiken voor scenario's waarvoor de meeste up-to-datumresultaten zijn vereist, zoals een live dashboard. Een query die elke 10 seconden wordt uitgevoerd en het afgelopen 1 uur duurt, kan bijvoorbeeld profiteren van het opslaan van tussenliggende queryresultaten op het niveau van de opslag (shard).
De cache voor queryresultaten op shardniveau wordt automatisch ingeschakeld wanneer de Query results cache
wordt gebruikt. Omdat dezelfde cache wordt gedeeld als Query results cache
, zijn dezelfde capaciteits- en verwijderingsbeleidsregels van toepassing.
Syntaxis
set
query_results_cache_per_shard
; Query-
Notitie
Deze optie kan worden ingesteld in de querytekst of als een clientaanvraageigenschap.
Meer informatie over syntaxisconventies.
Voorbeeld
set query_results_cache_per_shard;
GithubEvent
| where CreatedAt > ago(180d)
| summarize arg_max(CreatedAt, Type) by Id