pengembangan-web-mp.com

Apa perbedaan antara MyISAM dan InnoDB?

Saya mengerti bahwa pertanyaan ini telah ditanyakan sebelumnya, tetapi sebagian besar waktu ditanya sehubungan dengan database atau tabel tertentu. Saya tidak dapat menemukan jawaban di situs ini yang menggambarkan dua mesin dan perbedaannya tanpa memperhatikan database spesifik seseorang.

Saya ingin dapat membuat keputusan lebih terinformasi di masa depan sehubungan dengan merancang tabel atau database, jadi saya mencari jawaban yang komprehensif tentang perbedaan antara dua mesin penyimpanan.

Apa perbedaan antara MyISAM dan InnoDB , dan apa yang harus saya cari ketika mencoba untuk memutuskan antara satu atau yang lain?

247
Scott

Perbedaan utama antara InnoDB dan MyISAM ("sehubungan dengan merancang tabel atau database" yang Anda tanyakan) adalah dukungan untuk "integritas referensial" dan "transaksi".

Jika Anda memerlukan database untuk menegakkan batasan kunci asing, atau Anda membutuhkan database untuk mendukung transaksi (yaitu perubahan yang dilakukan oleh dua atau lebih operasi DML ditangani sebagai unit kerja tunggal, dengan semua perubahan yang diterapkan, atau semua perubahan dikembalikan) maka Anda akan memilih mesin InnoDB, karena fitur-fitur ini tidak ada di mesin MyISAM.

Itulah dua perbedaan terbesar. Perbedaan besar lainnya adalah konkurensi. Dengan MyISAM, pernyataan DML akan mendapatkan kunci eksklusif di atas meja, dan sementara kunci itu ditahan, tidak ada sesi lain yang bisa melakukan operasi SELECT atau DML di atas meja.

Dua mesin spesifik yang Anda tanyakan (InnoDB dan MyISAM) memiliki tujuan desain yang berbeda. MySQL juga memiliki mesin penyimpanan lain, dengan tujuan desain mereka sendiri.

Jadi, dalam memilih antara InnoDB dan MyISAM, langkah pertama adalah menentukan apakah Anda memerlukan fitur yang disediakan oleh InnoDB. Jika tidak, maka MyISAM siap untuk dipertimbangkan.

Diskusi perbedaan yang lebih terperinci agak tidak praktis (di forum ini) tidak ada diskusi yang lebih rinci tentang ruang masalah ... bagaimana aplikasi akan menggunakan database, berapa banyak tabel, ukuran tabel, beban transaksi, volume pilih , menyisipkan, memperbarui, persyaratan konkurensi, fitur replikasi, dll.


Desain logis dari basis data harus dipusatkan di sekitar analisis data dan persyaratan pengguna; pilihan untuk menggunakan basis data relasional akan datang kemudian, dan bahkan kemudian akan pilihan MySQL sebagai sistem manajemen basis data relasional, dan kemudian pemilihan mesin penyimpanan untuk setiap tabel.

406
spencer7593

MYISAM:

  1. MYISAM mendukung Penguncian level-tabel
  2. MyISAM dirancang untuk kebutuhan kecepatan
  3. MyISAM tidak mendukung kunci asing maka kita sebut MySQL dengan MYISAM adalah DBMS
  4. MyISAM menyimpan tabel, data, dan indeks dalam ruang disk menggunakan tiga file berbeda. (tablename.FRM, tablename.MYD, tablename.MYI)
  5. MYISAM tidak mendukung transaksi. Anda tidak dapat melakukan dan mengembalikan dengan MYISAM. Setelah Anda mengeluarkan perintah, itu sudah selesai.
  6. MYISAM mendukung pencarian teks lengkap
  7. Anda dapat menggunakan MyISAM, jika tabel lebih statis dengan banyak pilih dan kurang perbarui dan hapus.

INNODB:

  1. InnoDB mendukung Penguncian Tingkat Baris
  2. InnoDB dirancang untuk kinerja maksimum saat memproses volume data yang tinggi
  3. InnoDB mendukung kunci asing maka kita sebut MySQL dengan InnoDB adalah RDBMS
  4. InnoDB menyimpan tabel dan indeksnya dalam tablespace
  5. InnoDB mendukung transaksi. Anda dapat melakukan dan mengembalikan dengan InnoDB
337
medina