Saya pikir gotcha terbesar akan sekitar innodb menjadi transaksional. Anda akan ingin tahu apakah pustaka MySQL digunakan oleh aplikasi Anda auto_commit secara default atau tidak.
Python , misalnya, tidak otomatis melakukan. Ini berarti jika suatu aplikasi menyisipkan baris tepat sebelum menutup koneksi itu, sisipan itu sekarang akan diputar kembali setelah Anda mengubah ke innodb. Skrip python misalnya perlu memastikan untuk memanggil connection.commit ();
Titik perbedaan lain bisa sekitar insert atau pembaruan multi baris. Pertimbangkan inser multi baris tunggal
insert into tbl values (...row1...), (...row2...), (...rowN....);
Pertimbangkan apa yang terjadi jika ada beberapa jenis kesalahan seperti tabrakan kunci unik pada baris3. Dengan MyISAM, dua baris pertama akan ditulis, di bawah innodb semua baris yang dituliskan akan dibatalkan tanpa meninggalkan apa pun yang ditulis dalam kesalahan seperti itu.
Dengan innodb Anda akan memasuki dunia deadlock. Ini tidak secara inheren buruk kecuali mereka terjadi dengan frekuensi seperti itu untuk mencegah pekerjaan dilakukan. Namun aplikasi Anda perlu dikodekan sedemikian rupa sehingga mereka mengantisipasi kebuntuan dan menanganinya dengan tepat (yang kemungkinan besar berarti coba lagi).
Pertimbangkan keterbatasan memori / penyimpanan. Innodb jauh lebih banyak sumber daya daripada MyISAM. Jika Anda memiliki RAM yang cukup untuk menjaga kolam penyangga Anda cukup besar untuk mengakomodasi semua tabel Anda, maka Anda adalah yang terbaik.
Cari tabel yang memiliki kunci utama besar. Pengindeksan berkelompok Innodb berarti setiap indeks sekunder memiliki salinan PK baris yang sesuai. Jika Anda memiliki 2 indeks sekunder, itu artinya setiap baris PK disimpan 3 kali (PK + setiap indeks). Jika pk membentang di beberapa kolom dan tipe data besar (char (N) misalnya) Anda dapat melihat bagaimana persyaratan indeks dapat dengan cepat meledak di bawah innodb.