InnoDB ve MYISAM, MySQL için depolamada kullanılan ilişkisel veritabanı yönetim sistemleridir (Motorudur) . MySQL sürüm 5.5'ten önce varsayılan olarak MYISAM kullanılıyordu. MYISAM IBM tarafından
geliştirilen ve büyük veri kümelerinden hızlı bir şekilde bilgi almayı sağlayan bir endeksleme algoritması olan ISAM'a (Dizine Alınmış Sıralı Erişim Yöntemi) dayanmaktadır. MyISAM çok hızlıdır ve MySQL'de mevcut tüm depolama motorlarının en iyi okuma hızını sağlar. Bununla birlikte, bir tabloda aynı anda okuma ve yazma yapılırsa , MYISAM ın performansı çarpıcı bir şekilde düşer. Bu, tablo düzeyinde kilitleme ile açıklanmaktadır: bir uygulama bir MyISAM tablosuna veri eklediğinde veya güncellediğinde, diğer tüm işlemler kilitlenir yani ; InnoDB tablodaki belirli satırı kilitlerken MyISAM tüm MySQL tablosunu kilitler ve böylece siteye erişim durur.
Yaptığımız denemelerde WordPress içerik yönetim sisteminde veritabanı temizlik eklentilerinden WP-Optimize yi kullandığımızda tablo türümüz myISAM iken her defasında siteye olan erişim kesildi fakat tabloları InnoBD yaptığımızda aynı eklenti kullanıldığında site yayını hiç kesilmedi.
MySQL 5.5'ten sonra varsayılan olarak INNODB kullanılmaya başlandı bu motor , MySQL deki kullanıcı verilerini korumayı , emniyetli geri almayı ve kilitlenmede kurtarmayı taahüt eder fakat MyISAM ile karşılaştırıldığında daha fazla disk alanı ve RAM gerektirir. Mesela tablolarınızı tek tek veya topluca InnODB ye çevirirseniz veritabanı boyutunun arttığına şahit olursunuz. Aşağıdaki tabloda MySQL ve InnODB arasındaki performans testi görünmektedir. testte veritabanına satır ekleme, veritabanından satır silme ve satırı güncelleme testleri uygulanmıştır.
Üstteki tablodan da anlaşılacağı üzere MyISAM , InnODB den yaklaşık 10 kat daha hızlıdır. Bununla birlikte, veritabanı yük altında kaldığında ve tablolar güncellenmeye başlandığında, InnoDB hız olarak etkilenmemesine rağmen MyISAM 0,5 saniye veya daha fazla yavaşlama yapmaktadır.
MYISAM ve INNODB arasındaki Farklar
1. INNODB yeni MYISAM eskidir
2. MyISAM daha basitken InnoDB daha karmaşıktır.
3. InnoDB veri güncellemelerinde satır düzeyinde kilitleme uygularken MyISAM bütün tabloyu kilitler buda siteye erişimi durdurabilir.
4. Kilitlenmelerden kurtarma konusunda InnoDB daha iyidir, MyISAM sistem kilitlenmelerinde veri bütünlüğünü kurtarma konusunda yetersizdir.
5. MyISAM full-text search index e sahiptir INNODB de bu özellik yoktur
6. Veri bütünlüğü , yedekleme ve kurtarılması önemli ise InnoDb kullanılmalıdır ilaveten Yazma yoğunluğu yüksek tablolarda daha hızlıdır çünkü satır düzeyinde kilitleme kullanır ve yalnızca eklenen veya güncellenen aynı satırdaki değişiklikleri tutar.
7. INNODB , RAM gibi sistem kaynaklarını daha fazla tüketir.
8. MYISAM da Hiçbir veri bütünlüğü (örneğin, ilişki kısıtlamaları) kontrolü yoktur ve Bankacılık gibi kritik veri uygulamalarında gerekli olan işlemleri desteklemez.
9. MyISAM da transactions ve foreign keys desteği bulunmaz
10. Eğer Okuma yoğunlu fazla bir web sayfasınız varsa mesela ziyaretçiler sadece sayfanızı görüntülüyor ama veri giremiyorlarsa (select) MYISAM daha avantajlıdır. Fakat içerik sürekli değişiyorsa yoğun veri girişi yapılıyorsa INNODB tercih edilmelidir çünkü sık sık Eklenen veya güncellenen tablolar için MYISAM daha yavaş kalmaktadır.
Tabloları MyISAM dan InnoDB ye çevirmek yada tersi
Eğer veritabanı ile ilgili bağlantı kesilmesi gibi sorunlar yaşamıyorsanız Tablo türünüzü değiştirmenizi önermem fakat ne yaparsanız yapın ikide bir bağlantı kesiliyorsa tüm tablolarınızı InnoDB ye çavirebilirsiniz . Shared hostalarda fazla kaynak kullanımı sebebi ile de tersine InnoDB yerine MyISAM ı tercih edebilirsiniz. Eğer veritabanınızdaki tablo sayısı az ise tavsiyem tüm tabloları tek tek elle dönüştürmenizdir bunun için aşağıdaki adımları takip ediniz.
1. Cpanelden PhpMyadmin e giriş yapın ve veritabanınızı seçin ardından veritabanında yeralan herhangi bir tabloya tıklayın , açılan sayfanın üst kısmında "İşlemler" kısmı bulunur buraya tıklayın
2. Yeni açılan sayfada Depolama Motoru kısmında bulunan aşağı açılır menüden MyISAM veya InnoDB seçimini yapınız ve son olarak Git butonu ile dönüştürme işlemini yapınız.
MyISAm ı InnoDB ye çevirelim
Tavsiyem tablo sayısı az ise üstteki yöntemi kullanmanızdır eğer tablo sayısı çoksa aşağıdaki komutlardan uygun olanını Mysql den çalıştırmanız pratiklik sağlayacaktır. Kodlarda Veritabanı ismi kısmına Veritabanınızın ismini yazmayı unutmayınız.
SELECT CONCAT('ALTER TABLE ',TABLE_NAME,' ENGINE=InnoDB;') FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE='MyISAM' AND table_schema = 'veritabanı_ismi';
Üstteki komut verildiğinde çıktı olarak MyIsam olan tabloların InnoDB ye dönüştürme kodlarını verecektir.
Bu kodları kopyalayıp MySqlden verdiğimizde tüm tablolar InnoDB ye çevrilecektir. Tablo sayısı fazla ise işlem uzun süreceğinden "Fatal error: Maximum execution time of 300 seconds exceeded" hatası almanız olasıdır bu sebeple dönüştüremedikleri için işlemi tekrarlamanız gerekecektir.
InnoDB yi MyISAm a çevirelim
InnoDB yi MyISAm a çevirmek için aşağıdaki kodları kullanarak bir çıktı elde edip sonrada bunu SQL sorgusu olarak çalıştırmanız gerekir.
SELECT CONCAT('ALTER TABLE ',TABLE_NAME,' ENGINE=MyISAM;') FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE='InnoDB' AND table_schema = 'veritabanı_ismi';
Veritabanı ismi kısmına Veritabanınızın ismi gelecektir.
- Veritabanı yüklemenin en kolay yolu (BigDump) Burada
- WordPress te databank (Veritabanı) temizligi Burada
- SSH bağlantısı ile dosya yedekleme Burada
- Easy php son sürüm kurulum ve ayarları Burada
- Local serverde alınan error 404 not found hatası Burada
Manuel de değiştirebilirsin , kodların çıktısını da kullanıp halledebilirsin.
ELinize sağlık farklı ve değişik bilgiler. wordpress kurmayı düşünüyorum bu seçimler nasıl oluyor biz mi seçiyoruz.