Perbezaan antara enjin storan mysql: 1. MyISAM tidak menyokong transaksi dan kunci peringkat baris, manakala InnoDB menyokong transaksi dan kunci peringkat baris 2. InnoDB menyokong MVCC dan kunci asing, manakala MyISAM tidak Menyokong MVCC dan kunci asing.
Persekitaran pengendalian tutorial ini: sistem Windows 10, versi mysql8.0.22, komputer Dell G3.
InnoDB menyokong sesuatu manakala MyISAM tidak menyokong perkara
InnoDB menyokong Row -kunci peringkat, manakala MyISAM menyokong kunci peringkat jadual
InnoDB menyokong MVCC, tetapi MyISAM tidak menyokong
InnoDB menyokong kunci asing, tetapi MyISAM tidak Menyokong
mysql tiga enjin storan: myisam, innodb dan memori
1. Perbezaan:
1) MyISAM menguruskan jadual bukan transaksi. Menyediakan storan dan pengambilan berkelajuan tinggi, serta keupayaan carian teks penuh. MyISAM disokong dalam semua konfigurasi MySQL dan merupakan enjin storan lalai melainkan MySQL dikonfigurasikan untuk menggunakan enjin lain secara lalai.
2) Enjin storan MEMORI menyediakan jadual "dalam memori". Enjin storan MERGE membolehkan koleksi diproses pada jadual MyISAM yang sama sebagai satu jadual. Sama seperti MyISAM, enjin storan MEMORY dan MERGE mengendalikan jadual bukan transaksi, dan kedua-dua enjin disertakan dalam MySQL secara lalai.
Nota: Enjin storan MEMORY dikenal pasti secara rasmi sebagai enjin HEAP.
3) InnoDB dan enjin storan menyediakan jadual keselamatan transaksi, yang disertakan dalam semua pengedaran binari MySQL 5.1 secara lalai Anda boleh mengkonfigurasi MySQL untuk membenarkan atau melumpuhkan mana-mana enjin mengikut pilihan anda.
2. Pengenalan kepada titik fungsi
1) Enjin storan MyISAM
Enjin storan MyISAM tidak Ia menyokong urus niaga, tidak menyokong kunci peringkat baris, dan hanya menyokong kunci jadual yang dimasukkan serentak Ia digunakan terutamanya untuk pilihan beban tinggi.
Jadual jenis Myisam menyokong tiga struktur storan berbeza: statik, dinamik dan dimampatkan.
(1) Jenis statik: Saiz lajur jadual yang ditentukan adalah tetap (iaitu, ia tidak mengandungi jenis data panjang boleh ubah seperti xblob, xtext, varchar, dll.), supaya mysql akan secara automatik menggunakan format myisam statik.
Prestasi jadual menggunakan format statik agak tinggi kerana overhed yang diperlukan untuk menyimpan data dalam format yang telah ditetapkan semasa penyelenggaraan dan akses adalah rendah. Tetapi prestasi tinggi ini datang sebagai pertukaran untuk ruang, kerana ia ditetapkan apabila ia ditakrifkan, jadi tidak kira berapa besar nilai dalam lajur, nilai maksimum akan diguna pakai dan menduduki seluruh ruang.
(2) Jenis dinamik: Jika lajur (walaupun hanya terdapat satu lajur) ditakrifkan sebagai dinamik (xblob, xtext, varchar dan jenis data lain), maka myisam akan menggunakan jenis dinamik secara automatik, walaupun jadual jenis dinamik menduduki Ia memerlukan lebih sedikit ruang daripada jadual statik, tetapi ia mengurangkan prestasi kerana jika kandungan medan berubah, kedudukannya mungkin perlu dialihkan, yang akan membawa kepada pemecahan. Apabila data berubah lebih banyak, pemecahan akan meningkat dan prestasi capaian data akan menurun dengan sewajarnya.
(3) Jenis termampat: Jika jadual yang dibuat dalam pangkalan data ini dibaca sahaja semasa keseluruhan kitaran hayat, dalam kes ini, jadual termampat myisam digunakan untuk mengurangkan penggunaan ruang.
2) Enjin storan MEMORI:
(1) Enjin storan memori sedikit berbeza daripada enjin storan sebelumnya Ia menggunakan data yang disimpan di dalamnya buat jadual, dan semua data juga disimpan dalam ingatan.
(2) Setiap jadual berdasarkan enjin storan memori sebenarnya sepadan dengan fail cakera Nama fail dan nama jadual fail adalah sama, dan jenisnya ialah .frm. Fail ini hanya menyimpan struktur jadual, dan fail datanya disimpan dalam ingatan, yang kondusif untuk pemprosesan data yang cepat dan meningkatkan keupayaan pemprosesan keseluruhan jadual.
(3) Enjin storan memori menggunakan indeks cincang (HASH) secara lalai, yang lebih pantas daripada menggunakan B-Tree Jika pembaca ingin menggunakan B-Tree, mereka boleh merujuknya semasa mencipta.
(4) Data fail enjin storan memori disimpan dalam memori Jika pengecualian berlaku dalam proses mysqld, data akan hilang jika mesin dimulakan semula atau dimatikan. Oleh itu, kitaran hayat jadual dalam enjin storan memori adalah sangat singkat dan biasanya hanya digunakan sekali sahaja.
3) enjin storan innoDB:
(1) enjin storan innodb Jadual mysql ini menyediakan keupayaan pembaikan kerosakan urus niaga dan sistem serta kawalan pecah berbilang versi Keselamatan transaksi .
(2) innodb menyokong lajur auto-increment (auto-increment) Nilai lajur auto-increment tidak boleh kosong Jika ia kosong apabila digunakan, bagaimanakah nilai sedia ada boleh disimpan secara automatik dan mula meningkat dalam nilai? Jika ada tetapi Jika ia lebih besar daripada nilai semasa, nilai ini akan disimpan.
(3) Enjin storan innodb menyokong kunci asing Jadual di mana kunci asing terletak dipanggil jadual anak dan jadual yang bergantung kepadanya dipanggil jadual induk.
(4) Perkara paling penting tentang enjin storan innodb ialah ia menyokong transaksi dan fungsi berkaitan transaksi.
(5) Enjin storan innodb menyokong kunci peringkat baris mvcc.
Pembelajaran yang disyorkan: tutorial video mysql
Atas ialah kandungan terperinci apakah perbezaan antara enjin storan mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!