Dela via


Cacheminne för frågeresultat

Gäller för: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft 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:

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ängen ServerCache
  • 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å affinitizedweakconsistencykan 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å trueframtvingar 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 cachegä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