Использование комбинации таблиц InnoDB и MyIsam

У меня есть 2 таблицы, в которых я хочу повысить надежность и, к счастью, не требует частых быстрых полных данных и экзаменов. Все остальные таблицы неизбежно будут MyISAM.

Могу ли я безопасно использовать оба (я прочитал несколько разочарований из этого), не опасаясь, что ошибки или данные будут затронуты различиями между двигателями?

Ответ 1

Да, вы можете.

Обратите внимание, что только таблицы InnoDB поддерживают транзакции и отношения FOREIGN KEY.

Ответ 2

Вы МОЖЕТЕ, но это приводит к ряду недостатков:

  • Настройка вашего сервера теперь обязательно будет компромиссом - вы не можете использовать всю память для MyISAM или InnoDB (NB: это не применяется, если они находятся на разных серверах).
  • Репликация завершается с ошибкой в ​​нескольких крайних случаях, так как если у вас произошла сбойная транзакция, содержащая изменения в некоторых таблицах MyISAM, она не может ее правильно зафиксировать и не откатить.
  • Вы по-прежнему не можете создавать резервные копии своего сервера с помощью MVCC, потому что вы все равно не получите согласованный снимок таблиц MyISAM.

В принципе, я бы посоветовал вам полностью переключиться на InnoDB. Тогда вы можете в значительной степени забыть о MyISAM, а не посвящать ему ресурсы и получить все преимущества использования InnoDB. Любой, кто думает, что MyISAM быстрее, либо не настраивает InnoDB правильно, либо имеет такие небольшие данные, которые ему нравятся.

MyISAM выполняет более быстрое сканирование таблицы, но если вы делаете это на больших таблицах, у вас возникают большие проблемы.