Veri tabanında InnoDB mi MyISAM mı kullanılmalıdır


Veri tabanında InnoDB mi MyISAM mı kullanılmalıdır
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.

Tablo Türü InnoDB

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.

Tablo türü MyISam

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.

myisam innodb hız testi

Ü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

veritabanı işlemler

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.

Elle Myisam ı InnoDB ye çevirme

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.

innoDB yi Myisam a çevirme

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 myisam çevriliyor

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


2 Yorum Var
  1. Avatar for Velociraptor
  2. Avatar for Tolga Uğurlu

Yorum Ekle

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Captcha