Bence en büyük gotcha işlemsel olmak innodb etrafında olurdu. Uygulamalarınız tarafından kullanılan MySQL kitaplıklarının varsayılan olarak auto_commit olup olmadığını bilmek isteyeceksiniz.
Örneğin Python otomatik olarak taahhütte bulunmaz. Bu, bir uygulama bağlantısını kapatmadan hemen önce bir satır ekliyorsa, innodb'a geçtikten sonra artık ekin geri alınacağı anlamına gelir. Örneğin python komut dosyasının connection.commit () öğesini çağırdığınızdan emin olmanız gerekir.
Başka bir fark noktası, çok satırlı ekler veya güncellemeler etrafında olabilir. Çok satırlı tek bir ekleme düşünün
insert into tbl values (...row1...), (...row2...), (...rowN....);
Sıra3'te benzersiz bir anahtar çarpışması gibi bir hata varsa ne olacağını düşünün. MyISAM ile ilk iki satır yazılır, innodb altında yazılan tüm satırlar geri alınır ve böyle bir hata bile yazılan hiçbir şey kalmaz.
Innodb ile kilitlenme dünyasına gireceksiniz. Bunlar, herhangi bir işin yapılmasını önlemek için böyle bir sıklıkta meydana gelmedikleri sürece doğal olarak kötü değildir. Bununla birlikte, uygulamalarınızın kilitlenmeleri önleyecek ve uygun şekilde işleyecekleri şekilde kodlanması gerekecektir (büyük olasılıkla sadece yeniden denemek anlamına gelir).
Bellek / depolama sınırlamalarını göz önünde bulundurun. Innodb, MyISAM'dan çok daha kaynak yoğun. Tampon havuzlarınızı tüm masalarınızı barındıracak kadar büyük tutmak için yeterli RAM'iniz varsa altınsınız.
Büyük birincil anahtarları olan tabloları arayın. Innodb'un kümelenmiş dizinlemesi, her ikincil dizinin karşılık gelen satırın PK'sının başka bir kopyasını tuttuğu anlamına gelir. 2 ikincil dizininiz varsa, bu, her PK sırası 3 kez (PK + her dizin) depolandığı anlamına gelir. Pk birkaç sütuna ve büyük veri türlerine (örneğin char (N)) yayılıyorsa, indeks gereksinimlerinin innodb altında nasıl hızlı bir şekilde patlayabileceğini görebilirsiniz.