Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 14231|Yanıt: 1

[Kaynak] mysql'de engine=innodb ile engine=myisam arasındaki fark

[Bağlantıyı kopyala]
Yayınlandı 16.07.2017 11:04:57 | | |
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.




Önceki:MySQL tablo alan tipi öznitelikleri ayrıntılı şekilde açıklanmıştır
Önümüzdeki:php veritabanı erişim aracı Medoo
 Ev sahibi| Yayınlandı 16.07.2017 11:09:29 |
//更改引擎
alter table table name engine = MyISAM;

Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com