Cacheminne för frågeresultat
Gäller för: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
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 cacheminnet. Den här prestandan sker dock på bekostnad av vissa "inaktuella" resultat.
Använda cacheminnet
Ange alternativet query_results_cache_max_age
som en del av frågan för att använda frågeresultatcachen. Du kan ange det här alternativet i frågetexten eller som en egenskap för klientbegäran. Till exempel:
set query_results_cache_max_age = time(5m);
GithubEvent
| where CreatedAt > ago(180d)
| summarize arg_max(CreatedAt, Type) by Id
Alternativvärdet är en 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
Cacheminnet 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:
- ClientRequestId
- Tillämpning
- Användare
Inkompatibla frågor
Frågeresultatet cachelagras inte om något av följande villkor är sant:
- Frågan refererar till en tabell som har principen RestrictedViewAccess aktiverad.
- Frågan refererar till en tabell som har principen RowLevelSecurity aktiverad.
- Frågan använder någon av följande funktioner:
- Frågan får åtkomst till en extern tabell eller en externa data.
- Frågan använder operatorn utvärdera plugin-.
Ingen giltig cachepost
Om det inte gick att hitta ett cachelagrat resultat som uppfyller tidsbegränsningarna, eller om det inte finns ett cachelagrat resultat från en "identisk" fråga i cacheminnet, 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ågeresultatet hanteras från cacheminnet?
När Kusto svarar på en fråga skickar han en annan ExtendedProperties svarstabell som innehåller en Key
kolumn och en Value
kolumn.
Cachelagrade frågeresultat kommer att ha en annan rad tillagd i tabellen:
- Radens
Key
kolumn innehåller strängenServerCache
- Radens
Value
kolumn innehåller en egenskapsuppsättning med två fält:-
OriginalClientRequestId
– Anger den ursprungliga begärans ClientRequestId. -
OriginalStartedOn
– Anger starttiden för den ursprungliga begärandekörningen.
-
Frågekonsekvens
Frågor som använder svag konsekvens kan bearbetas på olika klusternoder. Cacheminnet delas inte av klusternoder, varje nod har en dedikerad cache i sin egen privata lagring. Om två identiska frågor hamnar på olika noder kommer frågan därför att köras och cachelagras på båda noderna. Genom att ställa in frågekonsekvens på affinitizedweakconsistency
kan du se till att svaga konsekvensfrågor som är identiska landar på samma frågehuvud och därmed ökar träfffrekvensen för cacheminnet. Detta är inte relevant när du använder stark konsekvens.
Ledning
Följande hanterings- och observerbarhetskommandon stöds:
- Visa cacheminne för frågeresultat: Returnerar statistik som är relaterad till frågeresultatets cacheminne.
- Rensa cacheminne för frågeresultat: Rensar cacheminnet för frågeresultat.
- Uppdatera cachepost för frågor: en specifik post för frågecache kan uppdateras med hjälp av
query_results_cache_force_refresh
(OptionQueryResultsCacheForceRefresh)egenskapen för klientbegäran. 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 kan inte ingå i en "set"-instruktion.
Kapacitet
Cachekapaciteten är för närvarande fast på 1 GB per klusternod. Borttagningsprincipen är LRU.
Cacheminne för frågeresultat på horisontell nivå
Du kan använda cacheminne för frågeresultat på horisontell nivå för scenarier som kräver mest up-to-date-resultat, till exempel en live-instrumentpanel. Till exempel kan en fråga som körs var 10:e sekund och som sträcker sig över den senaste 1 timmen dra nytta av cachelagring av mellanliggande frågeresultat på lagringsnivå (shard).
Cacheminnet för frågeresultat på fragmentnivå aktiveras automatiskt när Query results cache
används. Eftersom den delar samma cache som Query results cache
gäller samma principer för kapacitet och borttagning.
Syntax
set
query_results_cache_per_shard
; Fråga
Not
Det här alternativet kan anges i frågetexten eller som en egenskap för klientbegäran.
Läs mer om syntaxkonventioner.
Exempel
set query_results_cache_per_shard;
GithubEvent
| where CreatedAt > ago(180d)
| summarize arg_max(CreatedAt, Type) by Id