Aracılığıyla paylaş


Sorgu tutarlılığı

Sorgu tutarlılığı, sorguların ve güncelleştirmelerin nasıl eşitleneceğini ifade eder. Sorgu tutarlılığının desteklenen iki modu vardır:

  • Güçlü tutarlılık: Güçlü tutarlılık, veri ekleme, silme ve şema değişiklikleri gibi en son güncelleştirmelere anında erişim sağlar. Güçlü tutarlılık varsayılan tutarlılık modudur. Eşitleme nedeniyle, bu tutarlılık modu eşzamanlılık açısından zayıf tutarlılık modundan biraz daha az iyi performans gösterir.

  • Zayıf tutarlılık: Zayıf tutarlılıkta, sorgu sonuçlarının en son veritabanı güncelleştirmelerini yansıtması gecikmeli olabilir. Bu gecikme genellikle 1 ila 2 dakika arasında değişir. Zayıf tutarlılık, güçlü tutarlılığa göre daha yüksek sorgu eşzamanlılık oranlarını destekleyebilir.

Örneğin, veritabanındaki bir tabloya dakikada 1000 kayıt alınırsa, güçlü tutarlılık ile çalışan bu tablo üzerinde yapılan sorgular en son alınan kayıtlara erişebilirken, bu tablo üzerinde zayıf tutarlılık ile çalışan sorguların son birkaç dakikadaki bazı kayıtlara erişimi olmayabilir.

Not

Varsayılan olarak, sorgular güçlü tutarlılık ile çalışır. Yalnızca daha yüksek sorgu eşzamanlılığını desteklemek için gerektiğinde zayıf tutarlılığa geçmenizi öneririz.

Güçlü tutarlılık için kullanım örnekleri

Veritabanında son birkaç dakika içinde gerçekleşen güncelleştirmelere güçlü bir bağımlılığınız varsa güçlü tutarlılık kullanın.

Örneğin, aşağıdaki sorgu 5 dakika içindeki hata kayıtlarını sayar ve 0'dan büyük bir uyarı tetikler. İçgörüleriniz değiştirilebileceği için bu kullanım örneği en iyi şekilde güçlü tutarlılık ile işlenir. Zayıf tutarlılık söz konusu olabileceğinden son birkaç dakika içinde alınan kayıtlara erişiminiz yoktur.

my_table
| where timestamp between(ago(5m)..now())
| where level == "error"
| count

Ayrıca, veritabanı meta verileri büyük olduğunda güçlü tutarlılık kullanılmalıdır. Örneğin. veritabanında milyonlarca veri kapsamı vardır ve zayıf tutarlılık kullanılması, sorgu kafalarının kalıcı depolamadan kapsamlı meta veri yapıtlarını indirmesine ve seri durumdan çıkarmasına neden olur ve bu da indirmelerde ve ilgili işlemlerde geçici hata olasılığını artırabilir.

Zayıf tutarlılık için kullanım örnekleri

Son birkaç dakika içinde veritabanında gerçekleşen güncelleştirmelere güçlü bir bağımlılığınız yoksa ve yüksek sorgu eşzamanlılığı gerekiyorsa, zayıf tutarlılığı kullanın.

Örneğin, aşağıdaki sorgu son 90 gün içinde haftalık hata kayıtlarını sayar. İçgörülerinizin etkilenme olasılığı düşük olduğundan son birkaç dakika içinde alınan kayıtlar atlandığından, bu durumda zayıf tutarlılık uygundur.

my_table
| where timestamp between(ago(90d) .. now())
| where level == "error"
| summarize count() by level, startofweek(Timestamp)

Zayıf tutarlılık modları

Aşağıdaki tabloda, zayıf sorgu tutarlılığının dört modu özetlemektedir.

Mode Açıklama
Rasgele Sorgular, zayıf tutarlı bir sorgu kafası görevi görecek kümedeki düğümlerden birine rastgele yönlendirilir.
Veritabanına göre benzinim Aynı veritabanındaki sorgular aynı zayıf tutarlı sorgu başlığına yönlendirilir ve bu veritabanı için tutarlı yürütme sağlanır.
Sorgu metnine göre benzinim Aynı sorgu metin karması olan sorgular, sorgu önbelleğe alma özelliğinden yararlanma açısından yararlı olan aynı zayıf tutarlı sorgu başlığına yönlendirilir.
Oturum kimliğine göre benzinim Aynı oturum kimliği karması olan sorgular aynı zayıf tutarlı sorgu başlığına yönlendirilir ve bir oturum içinde tutarlı yürütme sağlanır.

Veritabanına göre benzinim

Veritabanı moduna göre benzeme, aynı veritabanına karşı çalışan sorguların veritabanının aynı sürümünde yürütülmesini sağlar, ancak veritabanının en son sürümü olması gerekmez. Bu mod, belirli bir veritabanında tutarlı yürütmenin önemli olduğundan emin olmak için kullanışlıdır. Ancak. veritabanlarındaki sorgu sayısında bir dengesizlik vardır ve bu mod eşit olmayan yük dağıtımına neden olabilir.

Sorgu metnine göre benzinim

Sorgu metin moduna göre bencelik, sorgular Sorgu sonuçları önbelleğinden yararlandığında faydalıdır. Bu mod, aynı kimlik tarafından sık yürütülen yinelenen sorguları aynı sorgu başlığına yönlendirir, önbelleğe alınmış sonuçlardan yararlanmalarına ve küme üzerindeki yükü azaltmalarına olanak sağlar.

Oturum kimliğine göre benzinim

Oturum kimliği moduna göre benzinim, aynı kullanıcı etkinliğine veya oturumuna ait sorguların veritabanının aynı sürümüne karşı yürütülmesini sağlar, ancak en son sorgu olması gerekmez. Bu modu kullanmak için oturum kimliğinin her sorgunun istemci isteği özelliklerinde açıkça belirtilmesi gerekir. Bu mod, oturum içinde tutarlı yürütmenin gerekli olduğu senaryolarda yararlıdır.

Sorgu tutarlılığını belirtme

sorgu tutarlılığı modunu, istemci isteği göndererek veya sunucu tarafı ilkesi kullanarak belirtebilirsiniz. Herhangi biri tarafından belirtilmezse, varsayılan güçlü tutarlılık modu uygulanır.

  • İsteği gönderen istemci: İstemci isteği özelliğini kullanınqueryconsistency. Bu yöntem, belirli bir sorgu için sorgu tutarlılığı modunu ayarlar ve varsayılan veya sunucu tarafı ilkesi tarafından belirlenen genel etkin tutarlılık modunu etkilemez. Daha fazla bilgi için bkz. istemci isteği özellikleri.

  • Sunucu tarafı ilkesi: Sorgu tutarlılığı ilkesinin özelliğini kullanınQueryConsistency. Bu yöntem, sorgu tutarlılığı modunu iş yükü grubu düzeyinde ayarlar. Bu, kullanıcıların istemci isteği özelliklerinde tutarlılık modunu belirtme gereksinimini ortadan kaldırır ve istenen tutarlılık modlarını zorlamaya olanak tanır. Daha fazla bilgi için bkz. Sorgu tutarlılığı ilkesi.

Not

Kusto .NET SDK'sını kullanıyorsanız, bağlantı dizesi aracılığıyla sorgu tutarlılığını ayarlayabilirsiniz. Bu ayar, ilgili bağlantı dizesi aracılığıyla gönderilen tüm sorgular için geçerlidir. Daha fazla bilgi için bkz . Bağlantı dizesi özellikleri.