Memcache ile Mysql ve Site Performansı

Standard

Memcache ile performans arttırma… MySQL tuning v.s hikaye gibi duruyor, elbetteki mysql ayarlarında da limitleri arttırmak veya sitenizin hitlerine göre hareket etmek avantajlı. Ama esas oğlan memcache.

Siteniz anlık 5-10 ziyaret seviyelerine ulaştığında oldukça yorulmaya ve server’ınızı kasmaya mı başladı? Hatta artık sunucu yanıt vermiyor mu? CPU MySQL’den dolayı tavan mı yapıyor?

Kendi sitelerimde uzun bir dönem yaşadığım bu probleme nihayet yer aldığım bir proje sayesinde çözüm buldum. Bu işi memcache ile hallediyoruz.

Kısaca memcache’i anlatayım, onlarca websitesini arayıp taramayın. Altta çizilen basit şema ile hemen anlayacaksınız.

memcached flowchart

Yani, aynı sorgu memcache ile tutulmuş ise (memory) veritabanı sunucusuna uğramadan cache’lenen sorguyu size döndürür. Eğer sorgu cache zamanı bitmiş veya memory’de yoksa direk veritabanına gider ve sonuçları döndürür. Burada önemli olan bu sorguyu tekrar hafıza atmak?!

Örnekle açıklayalım. Elimizde “profil” diye bir tablomuz olsun. Şöyle bir sorguyu memcache üzerinden çektiğimizi varsayalım.

$q = memcache_query->(“select baslik from profil where userId = ’14′”);

memcache_query  bizim memcache ile harmanlanmış sorgu fonksiyonumuz olsun.

Bu sorgunun altında önce memcache’de  “select baslik from profil where userId = ’14′” sorgusu ve sonuçları var mı ona bakacağız, varsa direk sonucu basıp geçeceğiz yoksa veritabanına gidip sorguyu çalıştırıp, sonucu basıp cache’leyeceğiz.

Unutmayın, sorgunun ve sonuçlarının ne kadar hafıza tutulacağını da siz belirliyorsunuz. (60 = 1 dk)

 

Memcache konusunda yardım almak veya sitenizin / sunucunuzun performansını arttırmak için iletişim geçebilirsiniz. Sorgu ve sitenizin açılış zamanları arasındaki büyük değişimi siz de göreceksiniz.

 

2 thoughts on “Memcache ile Mysql ve Site Performansı

  1. murat

    Mutlu Bey ile projemizde iyilestirme calismalari yaptik. Uyguladiklari ve bize kattiklari yadirganacak gibi degil. Tskler.

Leave a Reply

Your email address will not be published. Required fields are marked *