Dua Storage Engine utama penyimpanan tabel untuk database MySQL adalah InnoDB dan MyISAM.
Berikut ringkasan perbedaan fitur dan kinerjanya:
- InnoDB lebih baru dalam hal pengembangan sementara MyISAM lebih dulu ada.
- InnoDB lebih kompleks, sementara MyISAM lebih sederhana.
- InnoDB semakin ketat dalam integritas data, sementara MyISAM longgar.
- InnoDB menerapkan penguncian tingkat baris untuk insert dan update baris, sementara MyISAM menerapkan penguncian tingkat tabel.
- InnoDB memiliki transaksi, sementara MyISAM tidak.
- InnoDB memiliki kunci asing (Foreign Key) dan contraints sementara MyISAM tidak.
- InnoDB memiliki sistem revovery lebih baik dari pada MyISAM.
- MyISAM memiliki indeks pencarian teks penuh (full text search) sementara InnoDB tidak.
Mengingat perbedaan-perbedaan, InnoDB dan MyISAM memiliki kelebihan dan kekurangan yang unik terhadap satu sama lain.
Keuntungan dari InnoDB
- InnoDB cocok digunakan dimana integritas data lebih prioritas.
- Lebih cepat dalam insert update tabel karena menggunakan tingkat penguncian baris.
Kekurangan dari InnoDB
- Karena InnoDB harus menjaga hubungan yang berbeda antara tabel, database administrator dan pencipta skema harus mengambil lebih banyak waktu dalam mendesain model data yang lebih kompleks daripada MyISAM.
- Mengkonsumsi sumber daya sistem yang lebih seperti RAM. Direkomendasikan bahwa engine InnoDB didisable jika tidak perlu substansial untuk itu, setelah instalasi MySQL.
- Tidak adanya pengindeksan teks penuh (full text search).
- restore database tidak bisa dengan cara copy dan paste file *.frm dan *.ibd. lebih baik restore dari backup *.sql
Keuntungan MyISAM
- Sederhana untuk dirancang dan dibuat, sehingga lebih baik untuk pemula. dan tidak perlu khawatir tentang hubungan antara tabel.
- Lebih cepat dari InnoDB pada keseluruhan sebagai akibat dari struktur sederhana sehingga jauh lebih sedikit sumber daya server.
- Pengindeksan teks lengkap (full text search).
- Sangat baik untuk membaca-intensif (select) tabel.
- backup dan restore cukup sederhana dengan cara copy dan pastekan file *.frm, *.myd dan *.myi kedalam /var/lib/mysql/nama_database/
Kekurangan dari MyISAM
- Tidak ada integritas data(misalnya kendala hubungan), yang kemudian datang tanggung jawab dan overhead dari para administrator database dan pengembang aplikasi.
- Tidak mendukung transaksi.
- Lebih lambat dari InnoDB untuk tabel yang sering insert dan diupdate, karena seluruh tabel terkunci untuk insert dan update.
Perbandingan tersebut cukup sederhana. InnoDB lebih cocok untuk data situasi kritis dimana table sering dilakukan insert dan update.
Disisi lain MyISAM, lebih cocok dengan aplikasi yang tidak cukup bergantung pada integritas data dan kebanyakan hanya memilih dan menampilkan data.
jika kita lihat lebih dalam struktur yang tersimpan antara InnoDB dan MyISAM dapat dilihat di sini:/var/lib/mysql/nama_database/
InnoDB memiliki 2 file dalam 1 tabel yaitu: nama_tabel.frm (tabel struktur) dan nama_tabel.ibd
MyISAM memiliki 3 file dalam 1 tabel yaitu: nama_tabel.frm (tabel struktur), nama_tabel.myd (tabel data) dan nama_tabel.myi (index)