1/ISAM
ISAM, veritabanının güncellendiğinden çok daha sık sorgulandığı şekilde tasarlanmış, iyi tanımlanmış ve zamanla test edilmiş bir veri tablosu yönetimi yaklaşımıdır. Sonuç olarak, ISAM okumaları hızlı yapar ve çok fazla bellek ve depolama kaynağı kaplamaz. ISAM'ın iki ana dezavantajı, işlem işlemeyi desteklememesi ve hata toleranssız olmamasıdır: sabit diskiniz çökerse, veri dosyaları geri alınamaz. Görev kritik uygulamalar için ISAM kullanıyorsanız, tüm gerçek zamanlı verilerinizi her zaman yedeklemeniz gerekir ve MySQL, çoğaltma özelliği sayesinde bu tür yedekleme uygulamalarını destekleyebiliyor.
2/InnoDB
İşlem kontrol yeteneği fonksiyonunu sağlar; bu, bir dizi komutun başarıyla yürütülmesini sağlar veya herhangi bir komut hatası olduğunda tüm komutların sonucunun geri alınmasını sağlar; bu da e-bankacılık için işlem kontrol yeteneğinin çok önemli olduğu düşünülebilir. COMMIT, ROLLBACK ve diğer işlem özellikleri için destek. Mysql'in en son sürümü, BDB desteğini kaldırıp InnoDB lehine almayı planlıyor.
MyIASM, aşağıdaki uzantılara sahip yeni bir IASM tablosu sürümüdür: İkili düzeyde taşınabilirlik. NULL sütun indeksi. Değişken satırlar için ISAM tablolarına göre daha az parça vardır. Büyük dosyalar için destek. Daha iyi indeks sıkıştırması. İstatistiksel bir dağılım mı daha iyi olur? Daha iyi ve daha hızlı auto_increment işleme.
İşte bazı detaylar ve uygulama farklılıkları:
1. InnoDB, TAM METİN tipindeki indeksleri desteklemez. 2. Tablolar InnoDB'de kaydedilmez belirli satırlar, yani SelectCount(*) from tablo ile birlikte InnoDB tüm tabloyu tarar ve kaç satır olduğunu hesaplar, ancak MyISAM sadece kaydedilen satırları okur. Count(*) ifadesi koşulda ise, her iki tablonun işleyişi aynıdır. 3. AUTO_INCREMENT türdeki alanlar için, yalnızca o alanı içeren indeks InnoDB'ye dahil edilmelidir, ancak MyISAM tablosunda diğer alanlarla birlikte federe bir indeks oluşturulabilir. 4.SIL FROM tablosundan, InnoDB tabloyu yeniden oluşturmaz, satır satır siler. 5. YÜKLEME TABLOSU MASTER işlemi InnoDB için çalışmaz, çözüm önce InnoDB tablosunu MyISAM tablosuna dönüştürmek, veriyi içe aktarmak, ardından InnoDB tablosuna çevirmektir, ancak ek InnoDB özellikleri (örneğin yabancı anahtarlar) kullanan tablolar için geçerli değildir.
Ayrıca, bir InnoDB tablosunun satır kilidi mutlak değildir; MySQL SQL bir SQL ifadesi çalıştırırken taranacak kapsamı belirleyemezse, InnoDB tablosu da tüm tabloyu kilitler, örneğin update Tablo kümesi num=1 burada "a%" gibi bir isim var
Hiçbir tablo her şeye gücü yetmez, ancak iş tipine uygun tablo tipini seçerek MySQL'in performans avantajlarını en üst düzeye çıkarabiliriz.
MySQL Administrator bir veritabanı oluşturduğunda, tablo varsayılan olarak InnoDB tipine geçer.
InnoDB, MyISAM İki tür arasındaki fark nedir: MyISAM tipi, işlem işleme gibi gelişmiş işlemeyi desteklemezken, InnoDB tipi destekler. MyISAM tipindeki tablolar, InnoDB tipinden birkaç derece daha hızlı performans gösteren performansa vurgu yaparken, işlem desteği sağlamazken, InnoDB işlem desteği, yabancı anahtarlar gibi gelişmiş veritabanı özellikleri sunar.
MyISAM tipi ikili veri dosyaları farklı işletim sistemleri arasında taşınabilir. Yani, Windows sisteminden doğrudan Linux sistemine kopyalanabilir.
Tablonun motor tipini değiştirin:
ALTER TABLO tablo adı ENGINE = MyISAM ;
MyISAM:,它是基于传统的ISAM类型,ISAM是Indexed Ardışık Erişim Yöntemi Kayıt ve dosyaların depolanması için standart yöntemdir. Diğer depolama motorlarına kıyasla, MyISAM tabloları kontrol etmek ve onarmak için çoğu araca sahiptir. MyISAM tabloları sıkıştırılabilir ve tam metin aramasını destekler. İşlemsel olarak güvenli değiller ve yabancı anahtarları desteklemezler. Bir şey geri alınırsa, eksik geri dönüş olur ve atomik değildir. Çok sayıda infaz yapılırsa TheSELECT, MyISAM daha iyi bir seçim.
InnoDB:这种类型是事务安全的.它与BDB类型具有相同的特性,它们还支持外键.InnoDB表格速度很快.具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表,
Bir şeyi destekleyen InnoDB türlerinde hızı etkileyen ana sebep, AUTOCOMMIT varsayılan ayarının açık olması ve programın açıkça BEGIN çağırmamasıdır Bir işlem başlatılır, bu da her ekleme için otomatik bir taahhüt ile sonuçlanır ve bu da hızı ciddi şekilde etkiler. SQL çalıştırılmadan önce start çağırabilirsiniz ve birden fazla SQL bir şeyi oluşturur (otomatik commit olsa bile) ayrıca açılabilir), bu da performansı büyük ölçüde artırır.
1. Kullanılan motor türü, karakter kodlama, tablo yapısı vb. dahil olmak üzere tablo bilgilerini görüntüleyin
Bu komutu kullanın
mysql> Tablo oluşturma t1; --t1 tablo adıdır
2. İşlemsel olmayan tabloları işlemlere geçirmek için aşağıdaki komut çalıştırılabilir (veri kaybolmaz), innodb tabloları myisam tablolarından daha güvenlidir: T1 Tablosunu Değiştir type=innodb; --t1 tablo adıdır
3. Innodb tablosu, repair table komutu ve myisamchk -r ile table_name yapılamaz Ama bir kontrol tablosu kullanabilirsiniz t1 ve mysqlcheck [OPTIONS] veritabanı [tablolar]
4. Aşağıdaki parametreler, mysql veritabanını başlatmak için komut satırına eklenmiştir; böylece yeni yayımlanan tüm mysql veri tabloları işlemleri ( Sadece yaratma cümlesini etkiler. ) --default-table-type=InnoDB
5. Varsayılan tablo türünü geçici olarak değiştirmek şu şekilde yapılabilir: set table_type=InnoDB;
MyISAM Avantajlar: hızlı hız, daha az disk alanı; Bir veritabanı veya tablonun disk kullanımı, işletim sistemi tarafından ilgili dosyanın (klasörün) boyutunu kontrol ederek veya SHOW TABLE STATUS SQL ifadesi kullanılarak bulunabilir Eksiler: Veri bütünlüğü mekanizması yok, yani işlemler ve yabancı anahtarlar için destek yok
InnoDB Avantajlar: İşlemleri ve yabancı anahtarları desteklemek ve tam veri bütünlüğü mekanizması. Bir kütüphane veya tablonun disk dalış doluluğunu kontrol etmek için TABLO DURUMUNU GÖSTER seçeneğini kullanabilirsiniz Dezavantajlar: ultra yavaş hız, büyük disk alanı; Tüm kütüphaneler genellikle bir veya birkaç dosyada saklanır ve işletim sistemi bir kütüphane veya tablonun ne kadar alanı olduğunu anlayamaz
BDB Avantajlar: Destek işlemleri, yabancı anahtarları desteklemez, çünkü işlem desteği temelinde, yabancı anahtarlar veritabanının istemci tarafında (örneğin PHP gibi) dolaylı olarak uygulanabilir, böylece veri bütünlüğü garanti altına alınır; Dezavantajlar: yavaş hız, yüksek disk kullanımı; Bir veritabanı veya tablonun alan dalışını TABLO DURUMUNU GÖSTER aracılığıyla sorgulamayabilirsiniz. İşletim sistemi, kütüphanenin ilgili klasörünün veya tablonun ilgili dosyasının boyutunu anlayabilir, ancak BDB tablosu her zaman bir günlük dosyası oluşturmak zorunda olduğundan, gerçek disk duruşu günlük dosyasını da içermelidir, bu nedenle bir kütüphane veya tablo boyutu her zaman işletim sisteminin kapladığı gerçek alandan daha küçüktür.
|