Önbellekten önce ölç
Ölçülmeden eklenen bir önbellek, bilinmeyen bir kazanç için alınmış bir doğruluk riskidir.
- Bir şey yavaş ve önerilen çözüm önüne Redis koymak.
- Bayatlığın gerçek bir maliyeti olduğu ve erişim deseninin henüz bilinmediği okuma yolları.
Problem
Bir şey yavaş ve önerilen çözüm önüne Redis koymak. Ölçülmeden eklenen bir önbellek, bilinmeyen bir kazanç karşılığında alınmış bir doğruluk riski.
Bağlam
Bayatlığın gerçek bir maliyeti olduğu ve erişim deseninin henüz anlaşılmadığı okuma yolları.
Yaklaşım
Herhangi bir karar vermeden önce zamanın gerçekten nereye gittiğini buluyorum. “Önbellek lazım” denen durumların çoğunda gecikmenin tek bir kötü planlı sorguda toplandığı ortaya çıkıyor, ve onu düzeltmek ikinci bir doğruluk kaynağı eklemeden problemi ortadan kaldırıyor.
Zaman gerçekten tekrar eden aynı okumalarda geçiyorsa, inşa etmeden önce elde edeceğin isabet oranını ölç. Gerçek istek akışından örnek al ve kaç okumanın önbellekten karşılanacağını say. Yüzde kırk isabet oranı olan bir önbellek genellikle geçersizleştirme maliyetine değmiyor.
Sonra bayatlık sözleşmesini açıkça belirleyip yazıya döküyorum. Bu veri kimseye zarar vermeden ne kadar eski olabilir? Kimse cevap veremiyorsa önbelleğe almak için yeterince bilgin yok demektir.
Ancak bundan sonra önbelleğin nerede duracağına karar veriyorum. Süreç içi en ucuz ve en basit ama bayat kopya sayısını örnek sayısıyla çarpıyor. Paylaşımlı önbellekte tek bir doğru var ama kritik yola bir ağ atlaması ve yeni bir bağımlılık ekleniyor.
Ödünleşimler
Her önbellek, doğrunun yaşayabileceği ikinci bir yer ve ikisi uyuşmadığında yeni bir hata biçimi getiriyor. Geçersizleştirme mantığı zamanla kod tabanına yayılıyor ve ürettiği hatalar aralıklı, tekrar üretilmesi zor hatalar oluyor.
Bir de kapasite tuzağı var: yeterince iyi çalışan bir önbellek, alttaki problemi soğuk kaldığı güne kadar gizliyor; o gün soğuk başlangıç sistemi tam da en kötü anda indiriyor.
Bu ne zaman işe yaramaz
Bakiye veya stok adedi gibi her zaman güncel olması gereken veride okumayı önbelleğe almak yanlış katman; çözüm o verinin nasıl hesaplandığında.
Darboğaz yazma tarafındaysa okuma önbelleği hiçbir şey yapmıyor.