Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure Cosmos DB tümleşik önbelleği, istek hacminiz büyüdükçe yönetilebilir maliyetleri ve düşük gecikme süresini sağlamanıza yardımcı olan bir bellek içi önbellektir. Tümleşik önbelleği ayarlamak kolaydır ve önbellek geçersiz kılınması veya arka uç altyapısını yönetmek için özel kod yazmak için zaman harcamanız gerekmez.
Tümleşik önbellek, Azure Cosmos DB hesabınızdaki ayrılmış ağ geçidini kullanır. Ayrılmış ağ geçidinizi sağlarken, iş yükünüz için gereken çekirdek ve bellek sayısına göre düğüm sayısını ve düğüm boyutunu seçebilirsiniz. Her ayrılmış ağ geçidi düğümü diğerlerinden ayrı bir tümleşik önbelleğe sahiptir.
Tümleşik önbellek, ayrılmış ağ geçidinde otomatik olarak yapılandırılır. Tümleşik önbelleğin iki bölümü vardır:
- Nokta okumaları için bir öğe önbelleği
- Sorgular için sorgu önbelleği
Tümleşik önbellek, En Son Kullanılan (LRU) çıkarma ilkesine sahip bir okuma ve yazma önbelleğidir. Öğe önbelleği ve sorgu önbellekleri tümleşik önbellek içinde aynı kapasiteyi paylaşır ve LRU çıkarma ilkesi her ikisi için de geçerlidir. Veriler, bir nokta okuma veya sorgu olmasına bakılmaksızın, önbellekten en son ne zaman kullanıldığına bağlı olarak çıkarılır. Her düğümdeki önbelleğe alınan veriler, yakın zamanda yazılan veya ilgili düğümde okunan verilere bağlıdır. Bir öğe veya sorgu bir düğümde önbelleğe alınmışsa, diğer düğümlerde önbelleğe alınmış olması gerekmez.
Not
Tümleşik önbellek hakkında geri bildiriminiz var mı? Duymak istiyoruz! Geri bildirimleri doğrudan Azure Cosmos DB mühendislik ekibiyle paylaşmaktan çekinmeyin: cosmoscachefeedback@microsoft.com
Tümleşik önbellekten yararlanan iş yükleri
Tümleşik önbelleğin temel amacı, yoğun okuma içeren iş yüklerinin maliyetlerini azaltmaktır. Azure Cosmos DB önbelleğe alınmadan zaten hızlı olduğundan, düşük gecikme süresi yararlı olsa da tümleşik önbelleğin temel avantajı değildir.
Tümleşik önbelleğe isabet eden nokta okumaları ve sorgular için sıfır İstek Birimleri (RU) ücreti vardır. Önbellek isabetlerinin işlem başına maliyeti arka uç veritabanındaki okumalardan çok daha düşüktür.
Aşağıdaki özelliklere uyan iş yükleri, tümleşik önbelleğin maliyetleri düşürmeye yardımcı olup olmadığını değerlendirmelidir:
- Okuma ağırlıklı iş yükleri
- Büyük öğelerde birçok yinelenen nokta okuması
- Çok sayıda tekrarlanan yüksek RU sorgusu
- Okumalar için sık erişimli bölüm anahtarı
Beklenen tasarrufta en büyük faktör, okuma işlemlerinin kendini tekrar etme derecesidir. İş yükünüz aynı nokta okuma veya sorgularını kısa bir süre içinde tutarlı bir şekilde yürütürse, tümleşik önbellek için harika bir adaydır. Yinelenen okumalar için tümleşik önbelleği kullanırken, yalnızca ilk okuma için RU'ları kullanırsınız. Aynı ayrılmış ağ geçidi düğümü üzerinden yönlendirilen sonraki okumalar (eğer MaxIntegratedCacheStaleness penceresi içindeyse ve veriler çıkarılmadıysa) bant genişliğini tüketmez.
Aşağıdakiler dahil olmak üzere bazı iş yükleri tümleşik önbelleği dikkate almamalıdır:
- Yoğun yazma iş yükleri
- Nadiren yinelenen nokta okumaları veya sorguları
- Değişiklik akışını okuyan iş yükleri
Öğe önbelleği
Öğe önbelleği nokta okumaları için kullanılır (Öğe Kimliği ve bölüm anahtarına göre anahtar/değer aramaları).
Öğe önbelleğini doldurma
- Yeni yazma, güncelleştirme ve silme işlemleri, isteğin yönlendirıldığı düğümün öğe önbelleğine otomatik olarak doldurulur.
- Öğe önbelleğine eklenmek üzere, isteğin yönlendirildiği düğümün öğe önbelleğinde bulunmayan (cache miss) nokta okuma isteklerindeki öğeler dikkate alınır.
- Birden çok öğe, örneğin
ReadManyiçin okuma istekleri söz konusu olduğunda, sorgu önbelleğini bir küme halinde doldurun, öğe önbelleğini ise tek tek öğeler olarak değil. - İşlem toplu işleminin parçası olan veya toplu modda olan istekler öğe önbelleğini doldurmaz.
Öğe önbelleği geçersiz kılınması ve çıkarılması
Her düğümün bağımsız bir önbelleği olduğundan, öğeler diğer düğümlerin değil, bir düğümün önbelleğinde geçersiz kılınabilir veya çıkarılmış olabilir. Belirli bir düğümün önbelleğindeki öğeler, aşağıdaki ölçütlere göre geçersiz kılınır ve çıkarılır:
- Öğe güncelleştirme veya silme
- En son kullanılmayan (LRU)
- Önbellek saklama süresi (başka bir deyişle ,
MaxIntegratedCacheStaleness)
Sorgu önbelleği
Sorgu önbelleği sorguları önbelleğe almak için kullanılır. Sorgu önbelleği, sorguyu anahtar/değer aramasına dönüştürür; burada anahtar sorgu metnidir ve değer sorgu sonuçlarıdır. Tümleşik önbelleğin sorgu altyapısı yoktur; yalnızca her sorgu için anahtar/değer aramasını depolar. Sorgu sonuçları bir küme olarak depolanır ve önbellek tek tek öğeleri izlemez. Belirli bir öğe, birden çok sorgunun sonuç kümesinde görünüyorsa sorgu önbelleğinde birden çok kez depolanabilir. Sorgu için en yüksek tümleşik önbellek eskiliğine ulaşılmadığı ve sorgu arka uç veritabanından sunulmadığı sürece temel alınan öğelerdeki güncelleştirmeler sorgu sonuçlarına yansıtılamaz.
Sorgu önbelleğini doldurma
- Önbelleğin yönlendirildiği düğümde bu sorgu (önbellek eksik) için bir sonuç yoksa, sorgu arka uçtan gönderilir. Sorgu çalıştırıldıktan sonra önbellek bu sorgunun sonuçlarını depolar.
- Aynı şekilde ancak sonuçları etkileyen farklı parametrelere veya istek seçeneklerine sahip sorgular (örneğin, maksimum öğe sayısı) kendi anahtar/değer çifti olarak depolanır.
- gibi
ReadManybirden çok öğeye yönelik istekleri okuyun, sorgu önbelleğini doldurun.ReadManysonuçlar bir küme olarak depolanır ve farklı girişlere sahip istekler kendi anahtar/değer çifti olarak depolanır.
Sorgu önbelleği temizleme
Sorgu önbelleği çıkarma, isteğin yönlendirildiği düğümü temel alır. Sorguların bir düğümde kaldırılması veya yenilenmesi, diğer düğümlerde bu durumun gerçekleşmemesi mümkündür.
- En son kullanılmayan (LRU)
- Önbellek saklama süresi (başka bir deyişle ,
MaxIntegratedCacheStaleness)
Sorgu önbelleğiyle çalışma
Sorgularınızın birden çok sonuç sayfası olsa bile sorgu önbelleğiyle çalışırken özel koda ihtiyacınız yoktur. Sorgu sayfalandırması için en iyi yöntemler ve kodlar, sorgunuz ister entegre önbelleğe ulaşsın, isterse arka uç sorgu motorunda yürütülsün, aynıdır.
Sorgu önbelleği, uygun olduğunda sorgu devamı belirteçlerini otomatik olarak önbelleğe alır. Birden çok sonuç sayfası içeren bir sorgunuz varsa, tümleşik önbellekte depolanan tüm sayfaların RU ücreti sıfır olur. Sorgu sonuçlarının sonraki sayfalarının arka uçta çalıştırılması gerekiyorsa, önceki çalışmayı yinelemekten kaçınabilmeleri için önceki sayfadan gelen bir devam belirteci bulunur.
Önemli
Farklı ayrılmış ağ geçidi düğümleri içindeki tümleşik önbellek örnekleri birbirinden bağımsız önbelleklere sahiptir. Veriler bir düğümde önbelleğe alınmışsa, diğer düğümlerde önbelleğe alınmış olması gerekmez. Aynı sorgudaki birden çok sayfanın aynı ayrılmış ağ geçidi düğümüne yönlendirileceği garanti değildir.
Tümleşik önbellek tutarlılığı
Tümleşik önbellek yalnızca oturum ve nihai tutarlılık ile okuma isteklerini destekler. Okumada tutarlı ön ek, sınırlanmış eskime veya güçlü tutarlılık varsa, tümleşik önbelleği atlar ve arka uçtan sunulur.
Tüm okumalar için, oturum ya da nihai tutarlılığı yapılandırmanın en kolay yolu, bunu hesap düzeyinde ayarlamaktır. Ancak, yalnızca bazı okumalarınızın belirli bir tutarlılık olmasını istiyorsanız, tutarlılığı istek düzeyinde de yapılandırabilirsiniz.
Not
Diğer tutarlılıklarla yapılan yazma istekleri önbelleği doldurmaya devam eder, ancak önbellekten okuma yapmak için isteğin ya oturum tutarlılığına ya da nihai tutarlılığa sahip olması gerekir.
Oturum tutarlılığı
Oturum tutarlılığı , hem tek bölge hem de genel olarak dağıtılmış Azure Cosmos DB hesapları için en yaygın kullanılan tutarlılık düzeyidir. Oturum tutarlılığı sayesinde tek istemci oturumları kendi yazma işlemlerini okuyabilir. Eşleşen bir oturum belirtecine sahip olmayan oturum tutarlılığı olan tüm okumalar IÇIN RU ücretleri uygulanır. Bu, geçerli bir oturum belirtecini açıkça geçirmediğiniz sürece, istemci uygulaması başlatıldığında veya yeniden başlatıldığında belirli bir öğe veya sorgu için ilk isteği içerir. Yazma işlemleri gerçekleştiren oturum dışındaki istemciler, tümleşik önbelleği kullandıklarında nihai tutarlılığı görür.
Maksimum Entegre Önbellek Eskiliği
MaxIntegratedCacheStaleness, seçilen tutarlılıktan bağımsız olarak önbelleğe alınan nokta okumaları ve sorguları için kabul edilebilir en yüksek eskilik değeridir.
MaxIntegratedCacheStaleness, istek düzeyinde yapılandırılabilir. Örneğin, 2 saat ayarlarsanız MaxIntegratedCacheStaleness , isteğiniz yalnızca veriler 2 saatten kısaysa önbelleğe alınmış verileri döndürür. Tümleşik önbelleği kullanarak yinelenen okuma olasılığını artırmak için, iş gereksinimlerinizin izin verdikçe yüksek değerini ayarlamanız MaxIntegratedCacheStaleness gerekir.
MaxIntegratedCacheStalenessönbelleğin doldurulmasıyla sonuçlanan bir istekte yapılandırıldığında, bu isteğin ne kadar süre önbelleğe alındığını etkilemez.
MaxIntegratedCacheStaleness önbelleğe alınmış verileri okumaya çalıştığınızda tutarlılığı zorlar. Genel TTL veya önbellek saklama ayarı yoktur; bu nedenle veriler, sadece entegre önbellek doluysa veya yeni bir okuma, geçerli önbelleğe alınmış girdinin yaşından daha düşük bir MaxIntegratedCacheStaleness ile çalıştırıldığında önbellekten çıkarılır.
Bu, çoğu önbelleğin çalışma şekline göre bir geliştirmedir ve aşağıdaki diğer özelleştirmelere izin verir:
- Her bir okuma işlemi veya sorgu işlemi için farklı eskime gereksinimleri ayarlayabilirsiniz.
- Aynı nokta okuma veya sorguyu çalıştırsalar bile farklı istemciler farklı
MaxIntegratedCacheStalenessdeğerler yapılandırabilir - Önbelleğe alınan veriler için okuma tutarlılığını değiştirmek istiyorsanız, değiştirmenin
MaxIntegratedCacheStalenessokuma tutarlılığı üzerinde hemen bir etkisi vardır
Not
En düşük MaxIntegratedCacheStaleness değer 0, maksimum değer ise 10 yıldır. Açıkça yapılandırılmadığında, MaxIntegratedCacheStaleness varsayılan değer 5 dakikadır.
Parametresini MaxIntegratedCacheStaleness daha iyi anlamak için aşağıdaki örneği göz önünde bulundurun:
| Zaman | İste | Yanıt |
|---|---|---|
| t = 0 sn | Sorgu A'yı MaxIntegratedCacheStaleness = 30 saniye ile çalıştır | Arka uç veritabanından sonuç döndürme (normal RU ücretleri) ve önbelleği doldurma |
| t = 0 sn | Sorgu B'i MaxIntegratedCacheStaleness = 60 saniye ile çalıştırma | Arka uç veritabanından sonuç döndürme (normal RU ücretleri) ve önbelleği doldurma |
| t = 20 sn | Sorgu A'yı MaxIntegratedCacheStaleness = 30 saniye ile çalıştır | Tümleşik önbellekten sonuç döndürme (0 RU ücreti) |
| t = 20 sn | Sorgu B'i MaxIntegratedCacheStaleness = 60 saniye ile çalıştırma | Tümleşik önbellekten sonuç döndürme (0 RU ücreti) |
| t = 40 sn | Sorgu A'yı MaxIntegratedCacheStaleness = 30 saniye ile çalıştır | Arka uç veritabanından sonuçları getirme (normal RU ücretleri) ve önbelleği yenileme |
| t = 40 sn | Sorgu B'i MaxIntegratedCacheStaleness = 60 saniye ile çalıştırma | Tümleşik önbellekten sonuç döndürme (0 RU ücreti) |
| t = 50 sn | Sorgu B'i MaxIntegratedCacheStaleness = 20 saniye ile çalıştırma | Arka uç veritabanından sonuçları getirme (normal RU ücretleri) ve önbelleği yenileme |
MaxIntegratedCacheStaleness'yi yapılandırmayı öğrenmek için MaxIntegratedCacheStaleness'i Ayarlamaya Bakın.
Tümleşik önbelleği atlama
Entegre önbellek, ayrılmış ağ geçidi SKU'su tarafından belirlenen sınırlı bir depolama kapasitesine sahiptir. Varsayılan olarak, ayrılmış ağ geçidiyle yapılandırılmış istemcilerden gelen tüm istekler bağlantı dizesi tümleşik önbellekten geçer ve önbellek alanı kaplar. Tümleşik önbellek isteğini atla seçeneğiyle hangi öğelerin ve sorguların önbelleğe alınabileceğini denetleyebilirsiniz. Bu istek seçeneği, sık tekrarlanması beklenmeyen öğe yazma veya okuma istekleri için kullanışlıdır.
Seyrek erişime sahip öğeler için tümleşik önbelleğin atlanması, daha fazla yinelemeye sahip öğeler için önbellek alanından tasarruf ederek RU tasarrufunu artırır ve çıkarmaları azaltır. Önbelleği atlayan istekler hala ayrılmış ağ geçidi üzerinden yönlendirilir. Bu istekler arka uçtan ve maliyet RU'larından sunulur.
Tümleşik önbelleği atlamayı öğrenmek için bkz. Tümleşik önbelleği atlama.
Ölçümler
Tümleşik önbellek için bazı anahtar DedicatedGateway ve IntegratedCache ölçümleri izlemek yararlı olur. Bu ölçümler hakkında bilgi edinmek için bkz . Microsoft.DocumentDB/DatabaseAccounts için desteklenen ölçümler.
Mevcut tüm ölçümler varsayılan olarak Azure portalındaki Ölçümler'den kullanılabilir (Ölçümler klasik değil):
Ölçümler, tüm ayrılmış ağ geçidi düğümleri arasında ortalama, maksimum veya toplamdır. Örneğin, beş düğümle ayrılmış bir ağ geçidi kümesi sağlarsanız ölçümler, beş düğümde de toplanan değeri yansıtır. Her düğüm için ölçüm değerlerini belirlemek mümkün değildir.
Yaygın sorunları giderme
Aşağıdaki örneklerde bazı yaygın senaryolarda hata ayıklama gösterilmektedir:
Uygulamamın ayrılmış ağ geçidini kullanıp kullanmadığı anlamadım
DedicatedGatewayRequests Denetleyin. Bu ölçüm, tümleşik önbelleğe isabet edip etmediğine bakılmaksızın ayrılmış ağ geçidini kullanan tüm istekleri içerir. Uygulamanız özgün bağlantı dizenizle standart ağ geçidini veya doğrudan modu kullanıyorsa hata iletisi görmezsiniz, ancak DedicatedGatewayRequests sıfırdır. Uygulamanız doğrudan modda, ayrılmış ağ geçidi bağlantı dizenizle çalışıyorsa, yine de birkaç DedicatedGatewayRequests görebilirsiniz.
İsteklerimin tümleşik önbellekte olup olmadığını anlamadım
IntegratedCacheItemHitRate ve IntegratedCacheQueryHitRate öğelerini kontrol edin. Bu değerlerin her ikisi de sıfırsa, istekler tümleşik önbelleğe isabet etmiyor demektir. Ayrılmış ağ geçidi bağlantı dizesini kullandığınızdan, ağ geçidi moduna bağlandığınızdan ve oturum veya nihai tutarlılığı kullandığınızdan emin olun.
Ayrılmış ağ geçidimin çok küçük olup olmadığını anlamak istiyorum
IntegratedCacheItemHitRate ve IntegratedCacheQueryHitRate öğelerini kontrol edin. Yüksek değerler (örneğin, 0,7-0,8 öncesi) ayrılmış ağ geçidinin yeterince büyük olduğunu gösteren iyi bir işarettir.
Eğer IntegratedCacheItemHitRate veya IntegratedCacheQueryHitRate düşükse, IntegratedCacheEvictedEntriesSize kontrol edin.
IntegratedCacheEvictedEntriesSize yüksekse, daha büyük bir ayrılmış ağ geçidi boyutunun yararlı olacağı anlamına gelebilir. Ayrılmış ağ geçidi boyutunu artırarak ve yeni IntegratedCacheItemHitRate ile IntegratedCacheQueryHitRatekarşılaştırarak denemeler yapabilirsiniz. Eğer daha büyük bir ayrılmış ağ geçidi IntegratedCacheItemHitRate veya IntegratedCacheQueryHitRate'yi geliştirmezse, tümleşik önbelleğin etkili olabilmesi için okumaların kendilerini yeterince tekrarlamaması mümkündür.
Ayrılmış ağ geçidimin çok büyük olup olmadığını anlamak istiyorum
Ayrılmış ağ geçidinin çok büyük olup olmadığını ölçmek, ayrılmış ağ geçidinin çok küçük olup olmadığını ölçmekten daha zordur. Genel olarak, küçükten başlamalı ve IntegratedCacheItemHitRate ile IntegratedCacheQueryHitRate gelişmeyi durdurana kadar ayrılmış ağ geçidi boyutunu yavaşça artırmalısınız. Bazı durumlarda, iki önbellek isabet ölçümünden yalnızca biri önemlidir, her ikisi de önemli değildir. Örneğin, iş yükünüz öncelikli olarak sorgulardan oluşuyorsa, IntegratedCacheQueryHitRate değeri IntegratedCacheItemHitRate değerinden çok daha önemlidir.
Verilerin çoğu MaxIntegratedCacheStaleness nedeniyle, LRU yerine, önbellekten çıkarılıyorsa, önbelleğiniz gerekenden daha büyük olabilir.
IntegratedCacheItemExpirationCount ve IntegratedCacheQueryExpirationCount birleştirildiğinde, neredeyse IntegratedCacheEvictedEntriesSize kadar büyükse, daha küçük bir ayrılmış ağ geçidi boyutuyla denemeler yapabilir ve performansı karşılaştırabilirsiniz.
Daha fazla ayrılmış ağ geçidi düğümü eklemem gerekip gerekmediğini anlamak istiyorum
Bazı durumlarda gecikme süresi beklenmedik şekilde yüksekse daha büyük düğümler yerine daha fazla ayrılmış ağ geçidi düğümüne ihtiyacınız olabilir.
DedicatedGatewayCPUUsage ve DedicatedGatewayMemoryUsage öğelerini kontrol ederek daha fazla özel ağ geçidi düğümü eklemenin gecikmeyi azaltıp azaltmayacağını belirleyin. Tümleşik önbelleğin tüm örnekleri birbirinden bağımsız olduğundan, daha fazla ayrılmış ağ geçidi düğümü eklenmesinin IntegratedCacheEvictedEntriesSizeöğesini azaltmayacağını unutmayın. Ancak, daha fazla düğüm eklemek, ayrılmış ağ geçidi kümenizin işleyebileceği istek birimini geliştirir.
Sonraki adımlar
- Azure Cosmos DB tümleşik önbelleği hakkında sık sorulan sorular
- Azure Cosmos DB tümleşik önbelleğini yapılandırma
- Azure Cosmos DB ayrılmış ağ geçidi - Genel Bakış
- Azure Cosmos DB'ye geçiş için kapasite planlaması yapmaya mı çalışıyorsunuz? Kapasite planlaması için mevcut veritabanı kümeniz hakkındaki bilgileri kullanabilirsiniz.
- Tek bildiğiniz mevcut veritabanı kümenizdeki sanal çekirdek ve sunucu sayısıysa, bkz. İlişkisel olmayan veritabanınızdaki sanal çekirdek veya vCPU sayısını Azure Cosmos DB RU/sn'ye dönüştürme
- Geçerli veritabanı iş yükünüz için tipik istek oranlarını biliyorsanız, Azure Cosmos DB kapasite planlayıcısını kullanarak RU/sn değerlerini tahmin etme konusuna bakın.