Şimdi şöyle bir durum var. InnoDB ağırlıklı kullanıyorsanız -ki evet kullanıyorsunuz, o zaman sunucunuzun RAM miktarının %75-80'nini ona ayırmanız gerekiyor. Yaptığınız testlerde ise InnoDB tanımlaması olmadığını belirtiyor. Yani aldığınız sonuç MyISAM yapısına göre sunulmuş dolayısıyla bu sonuçların doğruluğu kesin değil çünkü InnoDB ağırlığı fazla görünüyor.

Öncelikle, internette gördüğünüz her my.cnf konfigürasyonuna aldanmayın çünkü her site aynı olmadığı gibi, her insanın kullanım şekli de aynı değildir. Örneğin aynı sunucudan 2 tane düşünün. Birisinde farklı yazılım vardır, diğerinde farklıdır ve ikisinin my.cnf konfigürasyonu aynı olmaz. Mesela birinde MySQL yükü yok denecek kadar azdır ve onun my.cnf çok farklıdır. Şimdi siz onu alıp kullanırsanız sunucunuza alakasız bir optimizasyon yapmış olursunuz.

Çok hassas bir detay daha var ki, my.cnf optimizasyonunu mutlak bir biçimde yapmak ve en iyi verimi almak için mevcut veritabanını önce yedeğini alıp sonra silip, ardından my.cnf konfigüre edip, son olarak da MySQL'i başlatıp hemen ardından veritabanını temizce yüklemek gerekiyor. Bunu, bir yazılımın temiz kurulumunu yapmak gibi düşünün. Bilhassa InnoDB kayıtlarının verimli ve güvenli bir şekilde listelenmesi için çok önemli olduğunu söyleyebilirim.

Size şunu sorayım. Hangi paneli, -httpd dahil- scriptleri kullanıyorsunuz? cPanel, Apache, Litespeed, DirectAdmin, Nginx vb. gibi bunlardan hangisi? Bir de sunucu özellikleri tam olarak nedir? Son olarak my.cnf dosyasını buraya kopyalar mısınız? Bu my.cnf optimizasyon kolay bir iş değil. Soracak çok soru olabiliyor. Sitenizin günlük hiti, anlık veri girişleri, kullandığınız önbelleklemeler vs tümünü toplayıp hesaplayıp ona göre sonuç belirlemek gerekiyor. Sizin aldığınız sonuçlar genelde düz mantıkla çalışır. Az önce de belirttiğim gibi, mesela InnoDB tanımlaması yok ve ne tanımlıysa ona göre bir sonuç vermiş ki, halbuki açıkça InnoDB kullanıyorsunuz gibi vs vs konu böyle uzuyor.

Buna ilave olarak, gözlemlediğim kadarıyla sürekli bir veri girişi var. InnoDB tabloların büyüklüğünden bunu anlıyorum çünkü InnoDB insert+update (veri girişi ve güncelleme), MyISAM ise select (okuma) için idealdir. Örneğin hiç veri girişi olmayan ve sadece okunan bir siteniz varsa MyISAM harikadır ama sürekli veri girişi olan bir siteniz varsa InnoDB harikadır. Tabii harikadır ama InnoDB kaynak tüketimi fazladır. RAM miktarının büyük çoğunu ona ayırmanız gerekir ve bunu yapmazsanız hem verim alamazsınız, hem de en ufak bir zorlanmada sunucu yavaşlayabilir, CPU aşırı yükselebilir. Tabii site hızını da olumsuz yönde etkiler maalesef.