Udostępnij za pośrednictwem


Pamięć podręczna wyników zapytań

Dotyczy: ✅Microsoft Fabric

Usługa Kusto zawiera pamięć podręczną wyników zapytań. Podczas wystawiania zapytania można pobrać buforowane wyniki. Wydajność zapytań i niższe użycie zasobów będą występować, jeśli wyniki zapytania mogą być zwracane przez pamięć podręczną. Jednak ta wydajność jest kosztem niektórych "nieaktualności" w wynikach.

Korzystanie z pamięci podręcznej

query_results_cache_max_age Ustaw opcję jako część zapytania, aby użyć pamięci podręcznej wyników zapytania. Tę opcję można ustawić w tekście zapytania lub jako właściwość żądania klienta. Na przykład:

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

Wartość opcji to timespan , która wskazuje maksymalny "wiek" pamięci podręcznej wyników mierzony od czasu rozpoczęcia zapytania. Poza ustawionym przedziałem czasu wpis pamięci podręcznej jest przestarzały i nie będzie używany ponownie. Ustawienie wartości 0 jest równoważne, aby nie ustawiać opcji.

Zgodność między zapytaniami

Identyczne zapytania

Pamięć podręczna wyników zapytania zwraca wyniki tylko dla zapytań, które są traktowane jako "identyczne" z poprzednim buforowanym zapytaniem. Dwa zapytania są uznawane za identyczne, jeśli spełnione są wszystkie następujące warunki:

  • Te dwa zapytania mają tę samą reprezentację (co ciągi UTF-8).
  • Te dwa zapytania są wykonywane w tej samej bazie danych.
  • Te dwa zapytania współdzielą te same właściwości żądania klienta. Następujące właściwości są ignorowane w celach buforowania:
    • ClientRequestId
    • Aplikacja
    • User

Niezgodne zapytania

Wyniki zapytania nie będą buforowane, jeśli zostanie spełniony którykolwiek z następujących warunków:

Brak prawidłowego wpisu pamięci podręcznej

Jeśli nie można odnaleźć buforowanego wyniku spełniającego ograniczenia czasowe lub nie ma buforowanego wyniku z "identycznego" zapytania w pamięci podręcznej, zapytanie zostanie wykonane i jego wyniki będą buforowane, o ile:

  • Wykonanie zapytania zakończy się pomyślnie i
  • Rozmiar wyników zapytania nie przekracza 16 MB.

Wyniki z pamięci podręcznej

W jaki sposób usługa wskazuje, że wyniki zapytania są obsługiwane z pamięci podręcznej? W odpowiedzi na zapytanie usługa Kusto wysyła kolejną tabelę odpowiedzi ExtendedProperties zawierającą kolumnę Key i kolumnę Value . Buforowane wyniki zapytania będą zawierać kolejny wiersz dołączony do tej tabeli:

  • Kolumna Key wiersza będzie zawierać ciąg ServerCache
  • Kolumna Value wiersza będzie zawierać torbę właściwości z dwoma polami:
    • OriginalClientRequestId- Określa identyfikator ClientRequestId oryginalnego żądania.
    • OriginalStartedOn - Określa czas rozpoczęcia wykonywania oryginalnego żądania.

Spójność zapytań

Zapytania korzystające z słabej spójności mogą być przetwarzane w różnych węzłach klastra. Pamięć podręczna nie jest współużytkowany przez węzły klastra. Każdy węzeł ma dedykowaną pamięć podręczną we własnym magazynie prywatnym. W związku z tym, jeśli dwa identyczne zapytania lądują w różnych węzłach, zapytanie zostanie wykonane i buforowane w obu węzłach. Ustawiając spójność zapytań na affinitizedweakconsistency, można zapewnić, że słabe zapytania spójności, które są identyczne, znajdują się na tej samej głowie zapytań, a tym samym zwiększyć szybkość trafień pamięci podręcznej. Nie ma to znaczenia w przypadku używania silnej spójności.

Zarządzanie

Obsługiwane są następujące polecenia zarządzania i możliwości obserwacji:

  • Pokaż pamięć podręczną wyników zapytania: zwraca statystyki związane z pamięcią podręczną wyników zapytania.
  • Wyczyść pamięć podręczną wyników zapytania: czyści pamięć podręczną wyników zapytań.
  • Odśwież wpis pamięci podręcznej zapytań: można odświeżyć określony wpis pamięci podręcznej zapytań przy użyciu właściwości query_results_cache_force_refreshżądania klienta (OptionQueryResultsCacheForceRefresh).. Po ustawieniu truewartości na wartość to polecenie wymusi odświeżenie pamięci podręcznej wyników zapytań również wtedy, gdy istnieje istniejąca pamięć podręczna. Ten proces jest przydatny w scenariuszach, które wymagają udostępnienia wyników zapytań na potrzeby wykonywania zapytań. Ta właściwość musi być używana w połączeniu z obiektem "query_results_cache_max_age" i wysyłana za pośrednictwem obiektu ClientRequestProperties. Właściwość nie może być częścią instrukcji "set".

Wydajność

Pojemność pamięci podręcznej jest obecnie stała na poziomie 1 GB na węzeł klastra. Zasady eksmisji to LRU.

Pamięć podręczna wyników zapytań na poziomie fragmentu

Możesz użyć pamięci podręcznej wyników zapytań na poziomie fragmentu dla scenariuszy, które wymagają najbardziej aktualnych wyników, takich jak pulpit nawigacyjny na żywo. Na przykład zapytanie uruchamiane co 10 sekund i obejmujące ostatnie 1 godzinę może skorzystać z buforowania wyników zapytań pośrednich na poziomie magazynu (fragmentu).

Pamięć podręczna wyników zapytania na poziomie fragmentu jest automatycznie włączona, gdy Query results cache element jest używany. Ponieważ współudzieli tę samą pamięć podręczną co Query results cache, mają zastosowanie te same zasady wydajności i eksmisji.

Składnia

set query_results_cache_per_shard; Zapytanie

Uwaga

Tę opcję można ustawić w tekście zapytania lub jako właściwość żądania klienta.

Dowiedz się więcej na temat konwencji składni.

Przykład

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