Doğru depolama motorunu seçmek, gelecekteki geliştirmeleri etkileyen çok önemli bir stratejik karardır. Kullanım durumunuza bağlı olarak, MySQL için iki ana depolama motoru arasında karar verin – MyISAM veya InnoDB.
Bu yazıda, MyISAM ve InnoDB depolama motorları arasındaki temel farkları, hangi depolama motorunu kullandığınızı nasıl kontrol edeceğinizi ve nasıl dönüştüreceğinizi öğreneceksiniz.
Önkoşullar
- Terminale / komut satırına erişim
- İşlevsel bir MySQL veritabanı
- phpMyAdmin yüklü
MyISAM ve InnoDB nedir?
MyISAM ve InnoDB, MySQL depolama motorlarıdır. Depolama motorları, veritabanındaki verileri işlemek için kullanılan veritabanı yönetim sistemi bileşenleridir.
MyISAM
MyISAM, Dizinlenmiş Sıralı Erişim Yöntemi anlamına gelir. Aralık 2009’a kadar MySQL için varsayılan depolama motoruydu. MySQL 5.5’in piyasaya sürülmesiyle MyISAM, InnoDB ile değiştirildi.
MyISAM, büyük veri kümelerinden gelen bilgileri hızlı bir şekilde görüntüleyen bir ISAM algoritmasına dayalıdır. Küçük bir veri ayak izine sahiptir ve veri ambarı ve web uygulamaları için en uygun olanıdır.
InnoDB
InnoDB, MySQL 5.5’in piyasaya sürülmesinden bu yana MySQL için varsayılan depolama motoru olmuştur. İlişkisel verileri tutan büyük veritabanları için en uygunudur.
InnoDB, yüksek güvenilirlik ve performansa odaklanır ve bu da onu içerik yönetim sistemleri için harika kılar. InnoDB’nin en bilinen kullanımlarından biri, Wikipedia’ya güç veren MediaWiki yazılımıdır.
MyISAM ve InnoDB Ana Farkları
MyISAM ve InnoDB arasındaki temel farklara bir göz atalım.
Özellikler | MyISAM | InnoDB |
Tip | İşlem Dışı | işlemsel |
Kilitleme | Masa kilitleme | Satır düzeyinde kilitleme |
Yabancı anahtarlar | HAYIR | Evet |
Tablo, dizin ve veri depolama | Üç ayrı dosya (.frm, .myd ve .myi) | Tablo alanı |
İçin tasarlandı | Hız | Verim |
ASİT | HAYIR | Evet |
Depolama Motoru Türü
Geri alma yöntemine bağlı olarak iki tür depolama motoru vardır:
- İşlem dışı – yazma seçeneklerinin manuel olarak geri alınması gerekir.
- işlemsel – yazma seçenekleri, tamamlanmazlarsa otomatik olarak geri alınır.
Özet: MyISAM işlemsel olmayan bir depolama motoruyken, InnoDB işlemsel bir depolama motorudur.
Kilitleme
MySQL’de kilitleme, iki veya daha fazla kullanıcının verileri aynı anda değiştirmesini engelleyen bir seçenektir. Kullanıcı, kilitleme seçeneği etkinleştirildiğinde verileri değiştiremez. Bu özellik, tüm verilerin geçerliliğini korur.
MyISAM kullanır masa kilitleme varsayılan kilitleme yöntemi olarak. Tek seferde tabloları değiştirmek için tek bir oturuma izin verir. Tablolar her zaman aynı sırada kilitlenir. Tablo kilitleme yöntemi, çok fazla bellek gerektirmeyen salt okunur veritabanları için en uygun yöntemdir.
Tablo kilitleme örneği:
Sorguları | Sütun 1 | Sütun 2 | Sütun 3 |
Sorgu 1 (güncelleme) | yazı | Veri | Veri |
Sorgu 2 (bekle) | Veri | Veri | Veri |
Sorgu 3 (bekle) | Veri | Veri | Veri |
InnoDB kullanır sıra düzeyinde kilitleme varsayılan kilitleme yöntemi olarak. Değişiklik sürecinde sadece satırları kilitleyerek seçilen satırlarda birden çok oturumu destekler. Satır kilitleme, birden çok kullanıcısı olan veritabanları için en uygundur. Dezavantajı, çok fazla bellek gerektirmesi ve verileri sorgulamak ve değiştirmek için daha fazla zaman almasıdır.
Satır düzeyinde kilitleme örneği:
Sorguları | Sütun 1 | Sütun 2 | Sütun 3 |
Sorgu 1 (güncelleme) | yazı | Veri | Veri |
Sorgu 2 (seç) | Okuma | Veri | Okuma |
Sorgu 3 (güncelleme) | Veri | yazı | Veri |
Özet: MyISAM, tablo kilitlemeyi kullanırken InnoDB, varsayılan yöntem olarak satır düzeyinde kilitlemeyi kullanır.
Yabancı anahtarlar
Yabancı anahtar, bir tablodaki başka bir tablodaki bir sütuna (veya bir sütun koleksiyonuna) bağlanan bir sütundur (veya bir sütun koleksiyonudur). Tablolar arasındaki bağlantıyı bozan eylemleri ve geçersiz veri girme olasılığını engeller.
Özet: InnoDB desteklerken, MyISAM yabancı anahtar seçeneğini desteklemez.
Tablo, Dizin ve Veri Depolama
İki depolama motoru, dosyaları nasıl depoladıklarına bağlı olarak farklılık gösterir.
MyISAM tabloları, dizini ve verileri üç ayrı dosyada saklar:
- .frm – Tablo yapısını veya tablo tanımını içeren tablo formatı.
- .satılmış – Her tablo için dizinleri olan dizin dosyası.
- .dünya – Her tablonun verilerini içeren veri dosyası.
InnoDB tablo yapısını içinde saklar .frm dosya ve bir tablo alanı indeksleri ve verileri sakladığı yer.
Özet: MyISAM, verileri üç ayrı dosyada saklarken, InnoDB verileri tek bir dosyada saklar.
ASİT Desteği
ASİT veritabanı işlem özelliklerini ifade eder: atomiklik, tutarlılık, izolasyonVe dayanıklılık. Hata veya sistem arızası durumlarında işlemin tamamlanacağını garanti eder.
Veritabanı işlem modelleri hakkında daha fazla bilgi edinmek için ASİT ve Baz makalemize bakın.
Özet: MyISAM’in ACID desteği yoktur, InnoDB ise tam ACID uyumluluğuna sahiptir.
MyISAM veya InnoDB Kullanıp Kullanmadığınızı Nasıl Kontrol Edebilirsiniz?
Veri işleme için doğru depolama motorunun kullanılması çok önemlidir. Yanlış depolama motoru, sorgulamada hatalara, hız ve performansın düşmesine neden olabilir. Bu nedenle, MyISAM veya InnoDB’nin varsayılan depolama motoru olarak ayarlanıp ayarlanmadığını kontrol etmek çok önemlidir.
Not: MySQL performans ayarı, çok sayıda faktörün değerlendirilmesini gerektirir. En iyi performans için MyISAM yerine InnoDB kullanmanızı öneririz.
Komut Satırı ile kontrol edin
Aşağıda listelenen adımları izleyerek varsayılan depolama motoru hakkında bilgi edinin.
1. Terminali açın ve MySQL kabuğunda oturum açın. Ardından, veritabanlarının bir listesini görüntüleyin:
SHOW DATABASES;
2. Listeden tercih edilen veritabanını bulun ve seçin:
USE database_name;
Terminal, veritabanı değişikliği hakkında bir onay mesajı görüntüler.
3. Ardından, SHOW CREATE TABLE
tablo ve depolama motoru hakkındaki bilgileri görüntülemek için komut:
SHOW CREATE TABLE database_name.table_name;
Aşağıdaki örnekte çıktı, InnoDB’yi varsayılan depolama motoru olarak listeler.
Not: Yer değiştirmek database_name
Ve table_name
veritabanınızın ve tablonuzun adı ile.
phpMyAdmin Kullanarak Kontrol Edin
PhpMyAdmin’de varsayılan depolama motorunu kontrol etmenin iki yolu vardır:
- Bir tablo listesinden.
- Bir sorgu çalıştırarak.
Bir Tablo Listesinden
Hangi tabloların MyISAM veya InnoDB’yi varsayılan depolama motoru olarak kullandığını öğrenmek için bir tablo listesi kullanabilirsiniz.
1. Aç phpMyAdmin ve listeden tercih edilen veritabanını seçin.
2. içinde Tablo listesibulun Tip depolama motorlarının türlerini görmek için sütun. Örneğimizde, Müşteriler tablo, MyISAM’ı varsayılan depolama motoru olarak kullanır.
Sorgu Çalıştırma
Varsayılan bir depolama motorunu görüntülemenin başka bir yolu da bir sorgu çalıştırın.
1. Giriş yap phpMyAdmin ve bir veritabanı listesinden tercih edilen veritabanını seçin.
2. SQL Sorgu seçeneklerine erişmek için sekme.
3. Depolama motoru olarak MyISAM kullanan tüm tabloları görüntülemek için aşağıdaki komutu girin:
SELECT TABLE_NAME, ENGINE FROM information_schema. TABLES WHERE TABLE_SCHEMA = 'database_name' and ENGINE = 'myISAM'
4. tıklayın Gitmek bir sorgu çalıştırmak için.
Not: Yer değiştirmek database_name
veritabanınızın adı ile.
Çıktı, MyISAM depolama motorunu içeren tüm tabloların bir listesini görüntüler.
InnoDB depolama motorunu kullanarak veritabanlarını bulmak için aynı komutu kullanabilirsiniz. Değiştirerek sorguyu değiştirin ENGINE = 'myISAM'
ile ENGINE = 'InnoDB'
.
MyISAM ve InnoDB Nasıl Dönüştürülür?
Daha eski bir tablo MyISAM kullanırken InnoDB’yi günlük işlemlerde kullanırsanız sorunlar oluşabilir. Bu nedenle tabloların nasıl dönüştürüleceğini bilmek çok önemlidir.
Storage Engine’i Terminal Üzerinden Dönüştürün
çalıştır ALTER TABLE
depolama motorunu MyISAM’den InnoDB’ye ve tersi yönde dönüştürmek için MySQL kabuğundaki komut.
- InnoDB’yi MyISAM’a dönüştürmek için şunu çalıştırın:
ALTER TABLE database_name.table_name ENGINE=MyISAM;
- MyISAM’ı InnoDB’ye dönüştürmek için şunu çalıştırın:
ALTER TABLE database_name.table_name ENGINE=InnoDB;
Terminal bir onay mesajı yazdırır.
PhpMyAdmin Kullanarak Depolama Motorunu Dönüştürün
phpMyAdmin’de depolama motorunu dönüştürmenin iki yolu vardır:
- Kullanmak Tablo İşlemleri Menü.
- Sorgu çalıştırma.
İşlemler Menüsünü Kullanma
1. Bir veritabanı menüsünden tercih edilen veritabanını seçin.
2. Depolama motorunu değiştirmek istediğiniz tabloyu seçin ve Daha Aşağıya doğru açılan menü.
3. tıklayın Operasyonlar menüye erişmek için
4. Depolama Motoru içinde ayar Masa çeşitli depolama motorlarını içeren açılır menüyü yüklemek için seçenekler ve depolama motorunu tıklayın. Seçme InnoDB listeden ve tıklayın GİTMEK değişikliği kaydetmek için
Sorgu Çalıştırma
1. Şuraya erişin: SQL Tercih edilen veritabanı için komut merkezi.
2. Çalıştır ALTER TABLE
depolama motorunu dönüştürmek için MySQL kabuğundaki komut.
MyISAM’a dönüştürmek için şunu çalıştırın:
ALTER TABLE table_name ENGINE=MyISAM;
InnoDB’ye dönüştürmek için şunu çalıştırın:
ALTER TABLE.table_name ENGINE=InnoDB;
3. GİTMEK Sorguyu çalıştırmak için düğme.
Depolama motorunu başarıyla dönüştürdünüz.
Çözüm
Bu makaleyi okuduktan sonra, MyISAM ve InnoDB depolama motorları arasındaki farkları daha iyi anlamalısınız. Farklılıkları bilmek, ihtiyaçlarınıza en uygun depolama motorunu seçmenize yardımcı olur.
Ayrıca, depolama motorunu nasıl kontrol edeceğinizi ve gerekirse nasıl dönüştüreceğinizi de öğrendiniz.