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:
- İki sorgu aynı gösterime sahiptir (UTF-8 dizeleri olarak).
- İki sorgu aynı veritabanında yapılır.
- İki sorgu aynı istemci isteği özelliklerini paylaşır. Aşağıdaki özellikler önbelleğe alma amacıyla yoksayılır:
Uyumsuz sorgular
Aşağıdaki koşullardan herhangi biri doğruysa sorgu sonuçları önbelleğe alınmaz:
- Sorgu, RestrictedViewAccess ilkesinin etkinleştirildiği bir tabloya başvurur.
- Sorgu, RowLevelSecurity ilkesinin etkinleştirildiği bir tabloya başvurur.
- Sorgu aşağıdaki işlevlerden herhangi birini kullanır:
- Sorgu bir dış tabloya veya dış verilere erişir.
- Sorgu, değerlendirme eklentisi işlecini kullanır.
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 Key
ExtendedProperties 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çerirServerCache
- 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 affinitizedweakconsistency
ayarlayarak, 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ığındatrue
, 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 cache
paylaştığından, aynı kapasite ve çıkarma ilkeleri uygulanır.
Syntax
set
query_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
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin