Я готов перейти от MyISAM к InnoDB, но хотел знать, есть ли полный список вещей, которые нужно искать? Например, я не видел в списке упоминаний о том, что при работе DISABLE KEYS
с таблицей InnoDB выдается предупреждение, за исключением страницы руководства для ALTER TABLE
. Это то, о чем мне нужно знать, прежде чем переходить. Я думал, что я буду в порядке с моими вопросами, но, видимо, нет.
11
Я думаю, что самая большая проблема была бы в том, чтобы innodb был транзакционным. Вы захотите узнать, используют ли библиотеки MySQL вашими приложениями auto_commit по умолчанию или нет.
Например, Python не выполняет автоматическую фиксацию. Это означает, что если приложение вставляло строку непосредственно перед закрытием соединения, то вставка теперь будет откатываться после того, как вы измените innodb. Например, скрипт python должен обязательно вызывать connection.commit ();
Еще одна разница может заключаться в многострочных вставках или обновлениях. Рассмотрим одну многорядную вставку
Подумайте, что произойдет, если возникнет какая-то ошибка, например, столкновение уникального ключа в строке 3. С MyISAM первые две строки были бы записаны, при innodb все записываемые строки будут откатываться, не оставляя ничего записанного даже при такой ошибке.
С innodb вы попадете в мир тупиков. Это не плохо по своей природе, если они не происходят с такой частотой, чтобы предотвратить выполнение какой-либо работы. Однако ваши приложения должны быть закодированы таким образом, чтобы они предвидели взаимные блокировки и обрабатывали их соответствующим образом (что, скорее всего, означает просто повторную попытку).
Учитывайте ограничения памяти / памяти. Innodb намного более ресурсоемкий, чем MyISAM. Если у вас достаточно оперативной памяти для того, чтобы ваши буферные пулы были достаточно большими, чтобы вместить все ваши таблицы, тогда вы великолепны
Ищите таблицы с большими первичными ключами. Кластерная индексация Innodb означает, что каждый вторичный индекс содержит другую копию PK соответствующей строки. Если у вас есть 2 вторичных индекса, это означает, что каждая строка PK сохраняется 3 раза (PK + каждый индекс). Если pk охватывает несколько столбцов и большие типы данных (например, char (N)), вы можете увидеть, как требования к индексу могут быстро взорваться в innodb.
источник