Cache dei risultati della query
Kusto include una cache dei risultati della query. È possibile scegliere di ottenere risultati memorizzati nella cache durante l'emissione di una query. Si otterranno prestazioni di query migliori e consumo di risorse inferiore se i risultati della query possono essere restituiti dalla cache. Tuttavia, queste prestazioni vengono a spese di alcune "staleness" nei risultati.
Usare la cache
Impostare l'opzione come parte della query per usare la query_results_cache_max_age
cache dei risultati della query. È possibile impostare questa opzione nel testo della query o come proprietà della richiesta client. Ad esempio:
set query_results_cache_max_age = time(5m);
GithubEvent
| where CreatedAt > ago(180d)
| summarize arg_max(CreatedAt, Type) by Id
Il valore dell'opzione è un timespan
oggetto che indica l'età massima della cache dei risultati, misurata dall'ora di inizio della query. Oltre l'intervallo di tempo impostato, la voce della cache è obsoleta e non verrà usata di nuovo. L'impostazione di un valore pari a 0 equivale a non impostare l'opzione.
Compatibilità tra query
Query identiche
La cache dei risultati della query restituisce risultati solo per le query considerate "identiche" a una query memorizzata nella cache precedente. Due query vengono considerate identiche se vengono soddisfatte tutte le condizioni seguenti:
- Le due query hanno la stessa rappresentazione (come stringhe UTF-8).
- Le due query vengono eseguite nello stesso database.
- Le due query condividono le stesse proprietà della richiesta client. Le proprietà seguenti vengono ignorate a scopo di memorizzazione nella cache:
Query incompatibili
I risultati della query non verranno memorizzati nella cache se una delle condizioni seguenti è true:
- La query fa riferimento a una tabella con i criteri RestrictedViewAccess abilitati.
- La query fa riferimento a una tabella con i criteri RowLevelSecurity abilitati.
- La query usa una delle funzioni seguenti:
- La query accede a una tabella esterna o a un dato esterno.
- La query usa l'operatore di valutazione del plug-in .
Nessuna voce di cache valida
Se un risultato memorizzato nella cache soddisfa i vincoli di tempo non è stato trovato oppure non esiste un risultato memorizzato nella cache da una query "identica", la query verrà eseguita e i relativi risultati verranno memorizzati nella cache, purché:
- L'esecuzione della query viene completata correttamente e
- Le dimensioni dei risultati della query non superano 16 MB.
Risultati dalla cache
In che modo il servizio indica che i risultati della query vengono serviti dalla cache?
Quando si risponde a una query, Kusto invia un'altra tabella di risposta ExtendedProperties che include una colonna e una Key
Value
colonna.
I risultati delle query memorizzati nella cache avranno un'altra riga aggiunta a tale tabella:
- La colonna della
Key
riga conterrà la stringaServerCache
- La colonna della riga conterrà un contenitore di
Value
proprietà con due campi:OriginalClientRequestId
- Specifica il clientRequestId della richiesta originale.OriginalStartedOn
- Specifica l'ora di inizio dell'esecuzione della richiesta originale.
Distribuzione
La cache non è condivisa dai nodi del cluster. Ogni nodo dispone di una cache dedicata nella propria risorsa di archiviazione privata. Se due query identiche vengono eseguite in nodi diversi, la query verrà eseguita e memorizzata nella cache in entrambi i nodi. Questo processo può verificarsi se viene usata coerenza debole . Impostando la coerenza delle query su affinitizedweakconsistency
, è possibile avere query di coerenza debole che sono identiche nella stessa testa di query e quindi aumentare la frequenza di hit rate della cache.
Gestione
Sono supportati i comandi di gestione e osservabilità seguenti:
- Mostra cache dei risultati della query: restituisce le statistiche correlate alla cache dei risultati della query.
- Cancella la cache dei risultati delle query: cancella la cache dei risultati delle query.
- Voce della cache delle query di aggiornamento: è possibile aggiornare una voce di cache di query specifica usando
query_results_cache_force_refresh
(OptionQueryResultsCacheForceRefresh)proprietà della richiesta client. Se impostato sutrue
, questo comando forza l'aggiornamento della cache dei risultati delle query anche quando è presente una cache esistente. Questo processo è utile negli scenari che richiedono che i risultati delle query siano disponibili per la query. Questa proprietà deve essere usata in combinazione con "query_results_cache_max_age" e inviata tramite l'oggetto ClientRequestProperties. La proprietà non può far parte di un'istruzione 'set'.
Capacità
La capacità della cache è attualmente fissa a 1 GB per nodo del cluster. Il criterio di rimozione è LRU.
Cache dei risultati delle query a livello di partizione
La cache dei risultati della query è efficace quando la stessa query viene eseguita più volte in successione rapida e può tollerare la restituzione di dati leggermente precedenti. Tuttavia, alcuni scenari, ad esempio un dashboard live, richiedono i risultati più aggiornati.
Ad esempio, una query che esegue ogni 10 secondi e si estende nell'ultima ora può trarre vantaggio dalla memorizzazione nella cache dei risultati delle query intermedie a livello di archiviazione (partizione).
La cache dei risultati della query a livello di partizione viene abilitata automaticamente quando l'oggetto Query results cache
è in uso. Poiché condivide la stessa cache di Query results cache
, vengono applicati gli stessi criteri di rimozione e capacità.
Sintassi
set
query_results_cache_per_shard
; Query
Nota
Questa opzione può essere impostata nel testo della query o come proprietà della richiesta client.
Altre informazioni sulle convenzioni di sintassi.
Esempio
set query_results_cache_per_shard;
GithubEvent
| where CreatedAt > ago(180d)
| summarize arg_max(CreatedAt, Type) by Id
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per