Rumah  >  Artikel  >  pangkalan data  >  Analisis perbandingan InnoDB dan MyISAM dalam MySQL

Analisis perbandingan InnoDB dan MyISAM dalam MySQL

WBOY
WBOYke hadapan
2023-06-02 16:16:351427semak imbas

Perbandingan antara InnoDB dan MyISAM

1. Struktur storan

MyISAM: Setiap MyISAM disimpan sebagai tiga fail pada cakera. Ia adalah: fail definisi jadual, fail data dan fail indeks. Nama fail pertama bermula dengan nama jadual dan sambungan menunjukkan jenis fail. Fail .frm menyimpan takrif jadual. Sambungan fail data ialah .MYD (MYData). Sambungan fail indeks ialah .MYI (MYIndex).

InnoDB: Semua jadual disimpan dalam fail data yang sama (atau berbilang fail, atau fail ruang jadual bebas Saiz jadual InnoDB hanya dihadkan oleh saiz fail sistem pengendalian umumnya 2GB).

2. Ruang storan

MyISAM: MyISAM menyokong tiga format storan yang berbeza: jadual statik (lalai, tetapi ambil perhatian bahawa tidak boleh ada ruang di hujung data, ia akan dialih keluar ), jadual dinamik, jadual termampat. Selepas jadual dibuat dan data diimport, ia tidak akan diubah suai Anda boleh menggunakan jadual mampat untuk mengurangkan penggunaan ruang cakera.

InnoDB: Memerlukan lebih banyak memori dan storan, ia akan mewujudkan kumpulan penimbal khususnya sendiri dalam memori utama untuk menyimpan data dan indeks.

3. Kemudahalihan, sandaran dan pemulihan

MyISAM: Data disimpan dalam bentuk fail, jadi ia sangat mudah untuk pemindahan data merentas platform. Anda boleh melakukan operasi di atas meja secara individu semasa sandaran dan pemulihan.

InnoDB: Penyelesaian percuma termasuk menyalin fail data, menyandarkan binlog atau menggunakan mysqldump, yang agak menyakitkan apabila volum data mencapai berpuluh-puluh gigabait.

4. Sokongan Transaksi

MyISAM: Penekanan adalah pada prestasi, setiap pertanyaan adalah atom dan masa pelaksanaannya lebih cepat daripada jenis InnoDB, tetapi ia tidak menyediakan sokongan urus niaga.

InnoDB: Menyediakan sokongan transaksi, kunci asing dan fungsi pangkalan data lanjutan yang lain. Jadual selamat urus niaga (mematuhi ACID) dengan keupayaan transaksi (komit), rollback (putar balik) dan ranap sistem.

5. AUTO_INCREMENT

MyISAM: Anda boleh mencipta indeks bersama dengan medan lain. Lajur pertumbuhan automatik enjin mestilah indeks Jika ia adalah indeks gabungan, lajur pertumbuhan automatik tidak perlu menjadi lajur pertama Ia boleh diisih mengikut lajur sebelumnya dan kemudian ditambah.

InnoDB: InnoDB mesti mengandungi indeks dengan medan ini sahaja. Lajur auto-tumbuh enjin mestilah indeks, dan jika ia indeks komposit, lajur itu juga mesti lajur pertama indeks komposit.

6. Perbezaan kunci jadual

MyISAM: Hanya kunci peringkat jadual disokong apabila pengguna mengendalikan jadual myisam, pilih, kemas kini, padam dan masukkan penyata akan semuanya ditugaskan secara automatik ke jadual Mengunci, jika jadual yang dikunci memenuhi konkurensi sisipan, data baharu boleh dimasukkan di hujung jadual.

InnoDB: Menyokong transaksi dan kunci peringkat baris ialah ciri terbesar innodb. Kunci baris meningkatkan prestasi operasi serentak berbilang pengguna. Walau bagaimanapun, kunci baris InnoDB hanya sah pada kunci utama WHERE Sebarang kunci bukan utama WHERE akan mengunci seluruh jadual.

7. Indeks teks penuh

MyISAM: menyokong indeks teks penuh jenis FULLTEXT

InnoDB: tidak menyokong indeks teks penuh jenis FULLTEXT , tetapi innodb boleh menggunakannya Pemalam sphinx menyokong pengindeksan teks penuh dan kesannya lebih baik.

8 Kunci utama jadual

MyISAM: Membenarkan jadual tanpa sebarang indeks dan kunci utama wujud.

InnoDB: Jika tiada kunci utama atau set indeks unik yang tidak kosong, kunci utama 6 bait akan dijana secara automatik (tidak kelihatan kepada pengguna, data tersebut adalah sebahagian daripada indeks utama). indeks tambahan menyimpan nilai indeks utama.

9. Bilangan baris tertentu dalam jadual

MyISAM: Menyimpan jumlah baris dalam jadual Jika anda memilih count() daripada jadual; ia akan dibawa keluar terus nilai.

InnoDB: Jumlah bilangan baris dalam jadual tidak disimpan Jika anda menggunakan pilih count(*) daripada jadual, ia akan menggunakan banyak wang. selepas menambah syarat wehre, myisam dan innodb memprosesnya.

10. Operasi CRUD

MyISAM: Jika anda melakukan sejumlah besar PILIHAN, MyISAM ialah pilihan yang lebih baik.

InnoDB: Jika data anda melakukan banyak INSERT atau UPDATE, anda harus menggunakan jadual InnoDB atas sebab prestasi.

11 Kunci asing

MyISAM: Tidak disokong

InnoDB: Disokong

Atas ialah kandungan terperinci Analisis perbandingan InnoDB dan MyISAM dalam MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam