Gereken ne önbellek boyutunu bilmek için herhangi bir yolu var mı?

2 Cevap php

Ben bir db olarak mysql kullanıyorum.

Sonuçlarını önbelleğe için gerekli önbellek boyutunu belirlemek için herhangi bir formül var mı?

Teşekkürler

2 Cevap

Bu genellikle ne kadar yedek RAM bir fonksiyonudur, veritabanınızın büyüklüğü ve ne kadar veri kümesi "popüler" dir.

(Aşağıda bir uygulama düzey önbellek bahsediyoruz varsayarak, ve değil I / O önbelleklerini, tampon önbelleklerini veya diğer alt düzey önbelleğe alma.)

Performansta (yani verimlilik en üst düzeye çıkarmak ve gecikmeyi en aza indirmek) için önbellek boyutlandırma ediyorsanız, o zaman basit bir formül toplam veritabanı boyutundan daha az sürede yedek RAM kadar kullanmak olacaktır. Başka bir basit formül yerde% 1 ve veritabanı boyutunun% 10 arasında başlar, ve kullanıma göre büyümek olacaktır.

Eğer dikkatli bir ihtiyacınız ne kadar önbellek hesaplamak istiyorsanız, o zaman bunu yapmak için en güvenilir yolu deneme, büyüyen önbellek boyutları ve grafik isabet oranına karşı, yani çalıştırmak yük testleri (bu özellikle doğrudur tarafından eğer veritabanı yük / kullanım özellikleri karmaşıktır.)

Örneğin, X ekseni önbellek boyutu olan bir grafiği var olabilir, ve Y-ekseni isabet oranı ve sorgu-gecikme hem de sahiptir. Amacınız isabet oranı maksimize edilir ve sorgu gecikme (bu farklı puan olabilir) minimize nerede minimum X (önbellek boyutu) bulmak olacaktır.

Doğru olarak yapmak için, size sorguları günlüklerini tutmak, onları tekrar edebilir, bir gerçek dünya yük testi ie gerekir. Sadece (basitlik için) sadece sigara mutasyona sorgularının tekrarını sınırlamak isteyebilirsiniz.

Yerine loadtests, sen zamanla isabet oranı ve sorgu-gecikme izlerken sonra, canlı bir veritabanı için bir önbellek (yerde% 1 ve% 10 arasında başlar) ekleyerek bu süreci basitleştirmek unutmayın. Bu, bir yük test framework kurulum yoksa yapmak için biraz daha kolay, ama bir üretim sistemi hakkında daha fazla müdahaleci olabilir. Isabet oranı çok düşük (veya sorgu gecikme çok yüksek) ise, önbelleği büyür. Değilse bunu küçülen bir fark yapar, sonra bakın.

(Tabii ki, orada kenar durumlarda ben geçiştirme ediyorum ki, burada, ama bu genel bir fikir. Örneğin, sorgu bazen farklı farklı maliyetlere sahip olabilir, ve farklı sorgu türleri için farklı önbelleklerini tahsis gerekebilir.)

Eğer bir önbellek var sonra, bu tür gecikme gibi diğer sorgu istatistikleri ile birlikte bu istatistikleri izleyin gerekir. Bunu zamanla büyümeye gerekebilir.

Yoksa, size güvenilir bir performans alabilirsiniz önce önbellek ısınmak gerektiğini bulabilirsiniz. Soğuk başlarken, belirli bir sorgu yükü, ve önbelleğe alma bileşen çöküyor dışarı hizmet edebilmek için önbellek güvenmek durumunda önbellek ısınır Örneğin, daha sonra veritabanı bir süre için aşırı alacak.

Her neyse, kısa cevabı basit bir çözüm olmasıdır, ve en iyi deney tarafından yapılan önbelleği boyutlandırma.

Nerede önbelleğe?

PHP önbellek yok var - Eğer yoksa yeterli bellek örnek bir ölümcül hata ile ve duracaktır tahsis.

Orada MySQL içinde önbelleklerini çok vardır varsayılan bu için büyük değerler ayırır. IME bu güvenle yalnız bırakılabilir - MySQL için ayrılan herhangi bir bellek sistemin I / O önbelleğe alma için daha az bellek anlamına gelir unutmayın.

Niye bir şey düzeltmek gerekiyor sizce?

C.