Sorgu sonuçları önbelleği
Şunlar için geçerlidir: ✅Microsoft Fabric✅
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üketimiyle karşılaşırsınız. Ancak, bu performans sonuçlarda bazı "eskime" pahasına gelir.
Ö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. Örneğin:
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ı" gösteren 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 önceki önbelleğe alınmış sorguyla "özdeş" olarak 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 gibi).
- İ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:
- ClientRequestId
- Uygulama
- User
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, evaluate eklentisi işlecini kullanır.
Geçerli önbellek girdisi yok
Zaman kısıtlamalarını karşılayan önbelleğe alınmış bir sonuç bulunamazsa veya önbellekte "ö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ırsa ve
- 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 sütun içeren başka bir Value
yanıt tablosu gönderir.
Önbelleğe alınan sorgu sonuçlarında bu tabloya 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.
-
Sorgu tutarlılığı
zayıf tutarlılık kullanan sorgular farklı küme düğümlerinde işlenebilir. Önbellek küme düğümleri tarafından paylaşılmadığından, her düğümün kendi özel depolama alanında ayrılmış bir önbelleği vardır. Bu nedenle, iki özdeş sorgu farklı düğümlere gelirse, sorgu yürütülür ve her iki düğümde de önbelleğe alınır. Sorgu tutarlılığını affinitizedweakconsistency
olarak ayarlayarak, aynı sorgu başlığında aynı olan zayıf tutarlılık sorgularının yer aldığından emin olabilir ve böylece önbellek isabet hızını artırabilirsiniz. Bu,
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 yenile: (OptionQueryResultsCacheForceRefresh)
query_results_cache_force_refresh
kullanılarak belirli bir sorgu önbellek girdisi 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.
Kapasite
Ö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
Canlı pano gibi en güncel sonuçları gerektiren senaryolar için parça düzeyinde sorgu sonuçları önbelleğini kullanabilirsiniz. Örneğin, her 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.
Sözdizimi
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