28.02.2009

Veritabanı İndeksleme İpuçları

Yeni bir web servisi açtınız, arkadaşlarınıza davetler gönderdiniz, yavaştan ziyaretçileriniz ve kullanıcılarınız artmaya başladı. İlk hafta günde 50 tekil ziyaretçi, ikinci hafta 100, sonra 300, 500, 1000 derken sunucular gerildi CPU/RAM oranı tavana vurdu, site gelmiyor. İlk yapabileceğiniz veritabanı yeterince optimize çalışıyor mu kontrol etmek.

İyi yapılmış veritabanı indeklemesi web servisinizin performansını %70-%80 arttırabilir. Bunu bilenler için yeni bir konu değil ancak bilmeyenler için çok hayati bir bilgi.

Hemen her veritabanı sistemi  bir tabloda bir kolonu “uniqe” tutar ve otomatik indeksler. Ancak özellikle birden fazla tabloyu birleştirerek yaptığınız sorgular için tablolar arası kurduğunuz bağlantıları da indekslemeniz gerekir. Bu indeksleme gerçektende tüm servisin %70-%80 daha hızlı çalışmasını sağlayabilir.

Hangi kolonları indeksleyebilirm?

  • JOIN için kullandığınız her kolon –foreign keys (Rails’de _id uzantılı kolonlar)
  • ORDER BY için kullandığınız her kolon (tarih, status gibi kolonlar)
  • GROUP BY için kullandığınız her kolon (yine status, ve benzeri kolonlar)
  • Tekil olduğunu kontrol ettiğiniz her kolon (mesela kullanıcı adı ve email adresi)

* Bu yazıyı taslaklar arasında buldum, yaklaşık bir yıldır bekliyormuş.

Etiketler

, , , , ,

1 Yorum

  1. Onur Gunduz

    O yazı hazır taslakdayken, hemen şunu paylaşayım :)

    http://bret.appspot.com/entry/how-friendfeed-uses-mysql

Yorum Yaz