14

Milletler,Bu bellek tüketim modelini Amazon RDS/Mysql'de açıklayın.

Birisi Mysql çalıştıran Amazon RDS'deki bu bellek tüketim modelini açıklayabilir mi? Bu grafikte, 34GB kullanılabilir bellekle saat 03: 30'da db.m2.2xlarge'e yükselttim. Değiştirmeyi çok net görebilirsiniz. İstemciler bu örneğe bağlanmaya ve vurmaya başladığında, Freeable belleği şimdi gittiği yerde 5 GB'a dik olarak düşer. DB örnek boyutları arasındaki önceki yükseltmemde, serbest kalıbı 1GB'ın altına düşene ve süresiz olarak buraya gelene kadar aynı modeli gördüm.

Bu örnek 03:30 ile 07:30 arasında ne yapıyor? Kullanılmadığı için neden kullanılmayan belleği serbest bırakmıyor? Sanırım bu grafiğin, kullanım ve trafik paternlerine, ve üstel deformasyon şekline karşılık gelen bir dalga şekli olmasını beklerim. Bu, bunun süper tembel ve/veya kırık bir çöp toplama algoritması olduğunu gösterir.

Ayrıca, DB işlemlerinin yaklaşık 2/3rds yazma ve 1/3 okuma olduğunu ve DB'nin önünde yaklaşık 2 GB'lık bir memcache olduğunu unutmayın.

memory consumption amazon rds mysql

cevap

13

MySQL daha hızlı sonuç için, son kullanılan tablolar, sorgular ve bellekte sonuçlarının bir önbellek tutar. Örneğin, bir istemciden 1 milyon kez "select * firmasından select *" sorguladığınızda, yalnızca ilk sorgu diske gitmeli, sonraki 999.999 düz bir şekilde RAM önbelleğinden gelecektir. MySQL'in daha fazla belleğe ihtiyaç duyduğunu bilene kadar bu önbelleği sona erdirmesinin bir nedeni yoktur, bu nedenle diğer işler veya daha sık kullanılan sonuçlar için RAM'i boşaltabilecek duruma gelene kadar işleri kurtarır.

Uzman olduğunu iddia etmiyorum - Çok karmaşık ve derin bir bilim olmak için DB sorgu önbellek optimizasyonunu anlıyorum. Oracle, Microsoft ve diğer programcılar, önbellek alanının yönetilmesi için en iyi yolun kullanıldığı yıllar ve yıllar geçirdiler, bu yüzden dışarıdan tahmin etmek zor.

İlgili konular