Cacheminne med frågeresultat
Kusto innehåller en cache för frågeresultat. Du kan välja att hämta cachelagrade resultat när du utfärdar en fråga. Du får bättre frågeprestanda och lägre resursförbrukning om frågans resultat kan returneras av cachen. Den här prestandan sker dock på bekostnad av viss "inaktuellhet" i resultatet.
Använd cachen
Ange alternativet query_results_cache_max_age
som en del av frågan för att använda frågeresultatets cacheminne. Du kan ange det här alternativet i frågetexten eller som en klientförfrågningsegenskap. Exempel:
set query_results_cache_max_age = time(5m);
GithubEvent
| where CreatedAt > ago(180d)
| summarize arg_max(CreatedAt, Type) by Id
Alternativvärdet är ett timespan
som anger den maximala "åldern" för resultatcachen, mätt från frågans starttid. Utöver det angivna tidsintervallet är cacheposten föråldrad och kommer inte att användas igen. Att ange värdet 0 motsvarar att inte ange alternativet.
Kompatibilitet mellan frågor
Identiska frågor
Cachen för frågeresultat returnerar endast resultat för frågor som anses vara "identiska" med en tidigare cachelagrad fråga. Två frågor anses vara identiska om alla följande villkor uppfylls:
- De två frågorna har samma representation (som UTF-8-strängar).
- De två frågorna görs till samma databas.
- De två frågorna delar samma egenskaper för klientbegäran. Följande egenskaper ignoreras i cachelagringssyfte:
Inkompatibla frågor
Frågeresultatet cachelagras inte om något av följande villkor är sant:
- Frågan refererar till en tabell som har RestrictedViewAccess-principen aktiverad.
- Frågan refererar till en tabell som har RowLevelSecurity-principen aktiverad.
- Frågan använder någon av följande funktioner:
- Frågan kommer åt en extern tabell eller externa data.
- Frågan använder plugin-operatorn evaluate .
Ingen giltig cachepost
Om ett cachelagrat resultat som uppfyller tidsbegränsningarna inte kunde hittas, eller om det inte finns ett cachelagrat resultat från en "identisk" fråga i cachen, körs frågan och dess resultat cachelagras, så länge:
- Frågekörningen har slutförts och
- Frågeresultatets storlek överskrider inte 16 MB.
Resultat från cachen
Hur anger tjänsten att frågeresultaten hanteras från cacheminnet?
När kusto svarar på en fråga skickar den en annan ExtendedProperties-svarstabell som innehåller en Key
kolumn och en Value
kolumn.
Cachelagrade frågeresultat får ytterligare en rad i tabellen:
- Radens
Key
kolumn innehåller strängenServerCache
- Radens kolumn innehåller en egenskapsuppsättning
Value
med två fält:OriginalClientRequestId
– Anger den ursprungliga begärans ClientRequestId.OriginalStartedOn
– Anger den ursprungliga begärans körningsstarttid.
Distribution
Cachen delas inte av klusternoder. Varje nod har en dedikerad cache i sin egen privata lagring. Om två identiska frågor hamnar på olika noder körs och cachelagras frågan på båda noderna. Den här processen kan inträffa om svag konsekvens används. Genom att ange frågekonsekvens till affinitizedweakconsistency
kan du ha frågor med svag konsekvens som är identiska på samma frågehuvud och därmed öka träfffrekvensen för cachen.
Hantering
Följande hanterings- och observerbarhetskommandon stöds:
- Visa cacheminne för frågeresultat: Returnerar statistik relaterad till cacheminnet för frågeresultat.
- Rensa cacheminnet för frågeresultat: Rensar cacheminnet för frågeresultat.
- Uppdatera frågans cachepost: en specifik frågecachepost kan uppdateras med hjälp av
query_results_cache_force_refresh
klientförfrågansegenskapen (OptionQueryResultsCacheForceRefresh). När det här kommandot är inställt påtrue
framtvingar det här kommandot att cacheminnet för frågeresultat uppdateras även när en befintlig cache finns. Den här processen är användbar i scenarier som kräver att frågeresultat är tillgängliga för frågor. Den här egenskapen måste användas i kombination med "query_results_cache_max_age" och skickas via ClientRequestProperties-objektet. Egenskapen får inte ingå i en set-instruktion.
Kapacitet
Cachekapaciteten är för närvarande fast vid 1 GB per klusternod. Borttagningsprincipen är LRU.
Cacheminne för frågeresultat på horisontell nivå
Cacheminnet för frågeresultat är effektivt när exakt samma fråga körs flera gånger i snabb följd och kan tolerera att lite gamla data returneras. Vissa scenarier, till exempel en live-instrumentpanel, kräver dock de senaste resultaten.
Till exempel kan en fråga som körs var tionde sekund och sträcker sig över den senaste 1 timmen dra nytta av cachelagring av mellanliggande frågeresultat på lagringsnivå (shard).
Cachen för frågeresultat på shardnivå aktiveras automatiskt när den Query results cache
används. Eftersom den delar samma cache som Query results cache
gäller samma kapacitets- och borttagningsprinciper.
Syntax
set
query_results_cache_per_shard
; Fråga
Anteckning
Det här alternativet kan anges i frågetexten eller som en klientförfrågningsegenskap.
Läs mer om syntaxkonventioner.
Exempel
set query_results_cache_per_shard;
GithubEvent
| where CreatedAt > ago(180d)
| summarize arg_max(CreatedAt, Type) by Id
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för