Aracılığıyla paylaş


Sorgu sonuçları önbelleği

Kusto bir sorgu sonuçları önbelleği içerir. Sorguyu gönderirken önbelleğe alınmış sonuçlar almayı seçebilirsiniz. Sorgunuzun sonuçları önbellek tarafından döndürülebiliyorsa daha iyi sorgu performansı ve daha düşük kaynak tüketimi yaşarsınız. Ancak bu performans, sonuçlarda bir miktar "eskime" sonucuna neden olur.

Önbelleği kullanma

Sorgu sonuçları önbelleğini query_results_cache_max_age kullanmak için seçeneğini sorgunun bir parçası olarak ayarlayın. Bu seçeneği sorgu metninde veya istemci isteği özelliği olarak ayarlayabilirsiniz. Örnek:

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

Seçenek değeri, sorgu başlangıç zamanından ölçülen sonuç önbelleğinin en büyük "yaşını" belirten bir timespan değerdir. Ayarlanan zaman aralığının ötesinde önbellek girdisi eskidir ve bir daha kullanılmaz. 0 değerinin ayarlanması, seçeneğin ayarlanmamasıyla eşdeğerdir.

Sorgular arasındaki uyumluluk

Özdeş sorgular

Sorgu sonuçları önbelleği, yalnızca önbelleğe alınmış önceki bir sorguyla "aynı" kabul edilen sorgular için sonuçları döndürür. Aşağıdaki koşulların tümü karşılanırsa iki sorgu aynı kabul edilir:

Uyumsuz sorgular

Aşağıdaki koşullardan herhangi biri doğruysa sorgu sonuçları önbelleğe alınmaz:

Geçerli önbellek girişi yok

Zaman kısıtlamalarını karşılayan önbelleğe alınmış bir sonuç bulunamazsa veya önbellekteki "özdeş" bir sorgudan önbelleğe alınmış bir sonuç yoksa, sorgu yürütülür ve sonuçları şu süre boyunca önbelleğe alınır:

  • Sorgu yürütmesi başarıyla tamamlanıp
  • Sorgu sonuçları boyutu 16 MB'ı aşmaz.

Önbellekten alınan sonuçlar

Hizmet, sorgu sonuçlarının önbellekten sunulduğuna nasıl işaret eder? Bir sorguyu yanıtlarken Kusto, sütun ve Value sütun içeren başka bir KeyExtendedProperties yanıt tablosu gönderir. Önbelleğe alınan sorgu sonuçlarında bu tablonun sonuna başka bir satır eklenir:

  • Satırın Key sütunu dizeyi içerir ServerCache
  • Satırın Value sütunu iki alanı olan bir özellik paketi içerir:
    • OriginalClientRequestId - Özgün isteğin ClientRequestId değerini belirtir.
    • OriginalStartedOn - Özgün isteğin yürütme başlangıç saatini belirtir.

Dağıtım

Önbellek küme düğümleri tarafından paylaşılmıyor. Her düğümün kendi özel depolama alanında ayrılmış bir önbelleği vardır. İki özdeş sorgu farklı düğümlere gelirse sorgu yürütülür ve her iki düğümde de önbelleğe alınır. Zayıf tutarlılık kullanılırsa bu işlem gerçekleşebilir. Sorgu tutarlılığını olarak affinitizedweakconsistencyayarlayarak, aynı sorgu başlığında aynı yerde bulunan zayıf tutarlılık sorgularına sahip olabilir ve bu sayede önbellek isabet hızını artırabilirsiniz.

Yönetim

Aşağıdaki yönetim ve gözlemlenebilirlik komutları desteklenir:

  • Sorgu sonuçları önbelleğini göster: Sorgu sonuçları önbelleğiyle ilgili istatistikleri döndürür.
  • Sorgu sonuçları önbelleğini temizle: Sorgu sonuçları önbelleğini temizler.
  • Sorgu önbelleği girdisini yenileme: (OptionQueryResultsCacheForceRefresh)istemci isteği özelliği kullanılarak query_results_cache_force_refresh belirli bir sorgu önbelleği girişi yenilenebilir. olarak ayarlandığında true, bu komut mevcut bir önbellek mevcut olduğunda sorgu sonuçları önbelleğinin de yenilenmesini zorlar. Bu işlem, sorgu sonuçlarının sorgu için kullanılabilir olmasını gerektiren senaryolarda kullanışlıdır. Bu özellik 'query_results_cache_max_age' ile birlikte kullanılmalıdır ve ClientRequestProperties nesnesi aracılığıyla gönderilmelidir. özelliği bir 'set' deyiminin parçası olamaz.

Capacity

Önbellek kapasitesi şu anda küme düğümü başına 1 GB olarak sabittir. Çıkarma ilkesi LRU'dur.

Parça düzeyi sorgu sonuçları önbelleği

Sorgu sonuçları önbelleği, aynı sorgunun birden çok kez hızlı bir şekilde ardılı olarak çalıştırıldığında etkili olur ve biraz eski verilerin döndürülmesi hoş karşılanabilir. Ancak canlı pano gibi bazı senaryolar en güncel sonuçları gerektirir.

Örneğin, 10 saniyede bir çalışan ve son 1 saate yayılan bir sorgu, ara sorgu sonuçlarını depolama (parça) düzeyinde önbelleğe alma avantajından yararlanabilir.

Parça düzeyi sorgu sonuçları önbelleği, kullanımda olduğunda Query results cache otomatik olarak etkinleştirilir. ile aynı önbelleği Query results cachepaylaştığından, aynı kapasite ve çıkarma ilkeleri uygulanır.

Syntax

setquery_results_cache_per_shard; Sorgu

Not

Bu seçenek sorgu metninde veya istemci isteği özelliği olarak ayarlanabilir.

Söz dizimi kuralları hakkında daha fazla bilgi edinin.

Örnek

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