Merhaba, öncelikle paylaşım için teşekkürler fakat eksik ve yanlış bilgiler içeren, insanları bir bakıma riskli işleme sürükleyen bir konu olmuş maalesef. Çünkü önce InnoDB ve MyISAM farkını anlatmanız gerekiyordu.
MyISAM select işleminde iyi olduğu için, ziyaretçiler veri girmeden sadece okuyup çıkıyorlarsa harika olacaktır. Ama sürekli veri giriyorlarsa (forumdaki gibi mesaj veya sitedeki yorum gibi vs) o zaman iyi olmaz. Çünkü MyISAM insert işlemlerinde yavaş kalır. İşte InnoDB burada harika olur çünkü InnoDB insert işleminde harikadır. Yani kısaca MyISAM okumada, InnoDB yazmada harikadır.
MyISAM tabloları olan bir veritabanını InnoDB'ye çevirince veritabanı boyutu iki kat daha artar. InnoDB RAM miktarının %85'ini kullanır. Yani InnoDB ciddi bir RAM kaynağına ihtiyaç duyar. InnoDB konfigüre etmek için en az VPS/VDS olması gerekir ki, RAM miktarına binen yük ayarlanabilsin. Yani InnoDB'yi %100 verimli kullanabilmek için sunucunun RAM miktarının %85'ini ona ayırmanız gerekiyor.
Dolayısıyla, tabloları InnoDB yapmak için gerekçeniz nedir? Siteniz daha çok okunan bir site mi, yoksa sürekli hem okunan hem de yazılan (yorum vs gibi) bir site mi? Nasıl bir siteniz var? Eğer veri girmekten çok okunan bir siteniz varsa MyISAM, hem okunup hem sık sık veri girişi olan bir siteniz varsa InnoDB iyi bir tercih olacaktır.
Aksi takdirde bu işlemi yapmak sitenizi daha da yavaşlatabilir. Bir de paylaşımlı hosting kullanıyorsanız, hosting firmanızla iletişime geçip RAM için ayarlanan my.cnf ayarının ne durumda olduğunu öğrenmeniz gerekir. Eğer bunu yapmadılarsa, iki gün sonra sitenizin CPU oranı çok yüksek diye sizi uyarabilirler.
Son olarak, Woocommerce olan bir sitede tabii ki işe yarar. Neticede sürekli ürün girişi çıkışı ve alışverişi oluyor. Woocommerce çok fazla girdi-çıktı yapan bir eklenti olduğu için InnoDB olması güzel ama bu, tüm tabloların InnoDB olmasını gerektiği anlamına gelmez. Çünkü veritabanındaki tabloları ona özeldir ve eğer okuma ve yazma işlemi en çok burada oluyorsa, diğerlerini yapmaya gerek yok demektir. Anca siteniz çok büyür, hitiniz çok artar, o zaman büyük bir sunucu alıp RAM miktarını güzelce belirleyip kullanabilirsiniz.
Edit/Not: Videonuzu izlemedim. Eğer videoda bu bilgileri zaten verdiyseniz, o zaman sorun yok demektir.
Katkılarınız için teşekkür ederim üstadım.
Sizin düşüncelerinize benzer görüşlerle yabancı topluluk sitelerinde sürekli karşılaşıyorum.
Aslında bu konu hala çetin bir tartışmayla devam ediyor.
InnoDB'nin üstünlüğüne karar verme gerekçem uzun zamandır yaptığım gözlemlerin sonuçlarından kaynaklanıyor.
Mesela siz yorumunuzda tamamiyle ziyaretçinin yazma işlemleri üzerinde durdunuz.
Fakat arka uçta veritabanının önbelleğe alınması işlemi de insert ile sonuçlanır.
Yada videoda InnoDB'ye dönüştürdüğüm rank math 404 tablosu
404 tespit edildikçe ilgili tabloya yazma anlamını taşıyor.
Yani durum sadece ziyaretçinin veritabanına yazma yapması demek değildir.
Birçok işlem zaten ziyaretçiden bağımsız veri tabanına yazma yapıyor.
Tüm bunlarla beraber, evet MyISAM en büyük avantajı daha hızlı okuma yapması.
Bununla birlikte, birden fazla işlemi aynı anda yapmanın önündeki güvenlik tedbiri olan tablo kilitlemesi de
performansa ciddi anlamda zarar veriyor.
Bahsettiklerinizin hepsi gerek vps-vds gerekse paylaşımlı hostingde tam olarak belirttiğiniz gibi sonuçlanmadı.
Örneğin şu zamana kadar barındırıcı firmadan yüksek cpu kullanımına dair hiçbir bir geri dönüş almadık.
Evet ram kullanımı daha fazla. Fakat bahsettiğiniz kadar uç noktada aşırılığı olmadığını söyleyebilirim.
Ve konuda belirttiğim gibi birçok gelişmiş barındırıcı firması varsayılan olarak InnoDB kullanıyor.
Yani siz bir hosting satın aldığınızda MyISAM tabloları dönüştürmenize gerek kalmayacak şekilde hepsi InnoDB zaten.
Kısacası teoride hala çalkantılı bir konu gibi görünebilir. Fakat uygulamalarımda InnoDB'nin üstünlüğünü gözlemledim.
Nitekim bu konuyu sizinle tartışmak güzel. Tekrardan teşekkürler.