Sdílet prostřednictvím


Mezipaměť výsledků dotazu

Kusto obsahuje mezipaměť výsledků dotazů. Při vydávání dotazu můžete získat výsledky uložené v mezipaměti. Pokud se výsledky dotazu můžou vracet z mezipaměti, dosáhnete lepšího výkonu dotazů a nižší spotřeby prostředků. Tento výkon však přichází na úkor určité "nesytosti" ve výsledcích.

Použití mezipaměti

query_results_cache_max_age Nastavte možnost jako součást dotazu tak, aby se používala mezipaměť výsledků dotazu. Tuto možnost můžete nastavit v textu dotazu nebo jako vlastnost požadavku klienta. Příklad:

set query_results_cache_max_age = time(5m);
GithubEvent
| where CreatedAt > ago(180d)
| summarize arg_max(CreatedAt, Type) by Id

Hodnota možnosti je , timespan která označuje maximální "stáří" mezipaměti výsledků měřené od času spuštění dotazu. Kromě nastaveného časového rozsahu je položka mezipaměti zastaralá a nebude se znovu používat. Nastavení hodnoty 0 odpovídá nenastavování možnosti .

Kompatibilita mezi dotazy

Identické dotazy

Mezipaměť výsledků dotazu vrací výsledky pouze pro dotazy, které jsou považovány za identické s předchozím dotazem uloženým v mezipaměti. Dva dotazy se považují za identické, pokud jsou splněny všechny následující podmínky:

Nekompatibilní dotazy

Výsledky dotazu se nebudou ukládat do mezipaměti, pokud platí některá z následujících podmínek:

Žádná platná položka mezipaměti

Pokud se nepodařilo najít výsledek uložený v mezipaměti splňující časová omezení nebo pokud v mezipaměti není výsledek "identického" dotazu v mezipaměti, dotaz se spustí a výsledky se uloží do mezipaměti za předpokladu, že:

  • Provádění dotazu se úspěšně dokončí a
  • Velikost výsledků dotazu nepřesahuje 16 MB.

Výsledky z mezipaměti

Jak služba indikuje, že se výsledky dotazu obsluhují z mezipaměti? Při odpovídání na dotaz kusto odešle další tabulku odpovědí ExtendedProperties , která obsahuje Key sloupec a Value sloupec. Výsledky dotazu v mezipaměti budou mít k této tabulce připojený další řádek:

  • Sloupec řádku Key bude obsahovat řetězec. ServerCache
  • Sloupec řádku Value bude obsahovat kontejner vlastností se dvěma poli:
    • OriginalClientRequestId – Určuje ClientRequestId původního požadavku.
    • OriginalStartedOn – Určuje počáteční čas provádění původního požadavku.

Distribuce

Mezipaměť se nesdílí mezi uzly clusteru. Každý uzel má ve svém vlastním privátním úložišti vyhrazenou mezipaměť. Pokud dva identické dotazy přijdou na různé uzly, dotaz se provede a uloží do mezipaměti na obou uzlech. K tomuto procesu může dojít při použití slabé konzistence . Nastavením konzistence dotazů na affinitizedweakconsistencymůžete mít slabě konzistenci dotazy, které jsou identické, přistane na stejné hlavině dotazů, a tím zvýšit rychlost přístupů do mezipaměti.

Správa

Podporují se následující příkazy pro správu a pozorovatelnost:

  • Zobrazit mezipaměť výsledků dotazu: Vrátí statistiky související s mezipamětí výsledků dotazu.
  • Vymazat mezipaměť výsledků dotazu: Vymaže mezipaměť výsledků dotazu.
  • Aktualizovat položku mezipaměti dotazů: Konkrétní položku mezipaměti dotazů je možné aktualizovat pomocí query_results_cache_force_refreshvlastnosti požadavku klienta (OptionQueryResultsCacheForceRefresh). Pokud je tato možnost nastavená na true, tento příkaz vynutí aktualizaci mezipaměti výsledků dotazu také v případě, že existuje existující mezipaměť. Tento proces je užitečný ve scénářích, které vyžadují, aby pro dotazování byly k dispozici výsledky dotazů. Tato vlastnost musí být použita v kombinaci s "query_results_cache_max_age" a odeslána prostřednictvím objektu ClientRequestProperties. Vlastnost nemůže být součástí příkazu set.

Capacity

Kapacita mezipaměti je v současné době pevně nastavená na 1 GB na uzel clusteru. Zásada vyřazení je LRU.

Mezipaměť výsledků dotazu na úrovni horizontálního oddílu

Mezipaměť výsledků dotazu je účinná, když se stejný dotaz spustí vícekrát rychle za sebou a může tolerovat vrácení mírně starých dat. Některé scénáře, například živý řídicí panel, ale vyžadují nejaktuálnější výsledky.

Například dotaz, který se spouští každých 10 sekund a zahrnuje posledních 1 hodinu, může těžit z ukládání průběžných výsledků dotazů do mezipaměti na úrovni úložiště (horizontálního oddílu).

Mezipaměť výsledků dotazu na úrovni horizontálního oddílu Query results cache se automaticky povolí, když se používá. Protože sdílí stejnou mezipaměť jako Query results cache, platí stejné zásady kapacity a vyřazení.

Syntax

setquery_results_cache_per_shard; Dotazu

Poznámka

Tuto možnost můžete nastavit v textu dotazu nebo jako vlastnost požadavku klienta.

Přečtěte si další informace o konvencích syntaxe.

Příklad

set query_results_cache_per_shard;
GithubEvent
| where CreatedAt > ago(180d)
| summarize arg_max(CreatedAt, Type) by Id