Я думаю, що найбільша проблема - це трансакція innodb. Ви хочете знати, чи використовуються бібліотеки MySQL, які використовуються вашими програмами auto_commit за замовчуванням чи ні.
Наприклад, Python не здійснює автоматичне здійснення. Це означає, що якщо програма вставляла рядок безпосередньо перед закриттям з'єднання, тепер вставлення буде повернуто після зміни іннодб. Наприклад, сценарій python повинен бути обов'язково зателефонував на connection.commit ();
Ще одна відмінність може полягати у вставці чи оновленнях з декількома рядками. Розглянемо одну вставку з декількома рядами
insert into tbl values (...row1...), (...row2...), (...rowN....);
Поміркуйте, що станеться, якщо в рядку3 є якась помилка, наприклад унікальне зіткнення ключа. З MyISAM були б написані перші два ряди, під innodb всі рядки, що записуються, будуть повернуті назад, не залишаючи нічого подібного в помилках.
З innodb ви увійдете у світ тупиків. Вони не є по суті поганими, якщо вони не трапляються з такою частотою, щоб не допустити будь-якої роботи. Однак ваші програми потребують кодування таким чином, що вони передбачають тупикові місця та обробляють їх належним чином (що, швидше за все, означає просто повторити).
Розглянемо обмеження пам'яті / зберігання. Innodb набагато більш ресурсомісткий, ніж MyISAM. Якщо у вас є достатня кількість оперативної пам’яті, щоб зберегти буферні пули досить великими, щоб вмістити всі ваші таблиці, то ви золото.
Шукайте таблиці з великими первинними ключами. Кластерована індексація Innodb означає, що кожен вторинний індекс містить ще одну копію ПК відповідного рядка. Якщо у вас є 2 вторинні індекси, це означає, що кожен рядок ПК зберігається 3 рази (PK + кожен індекс). Якщо pk охоплює декілька стовпців і великі типи даних (наприклад, char (N)), ви можете побачити, як вимоги до індексу можуть швидко вибухнути під innodb.