Вы можете иметь таблицы MyISAM и InnoDB в одной базе данных. Однако вы обнаружите, что при наличии очень больших таблиц MyISAM может вызвать проблемы с блокировкой таблиц. В конечном итоге это блокирует всю таблицу для одной транзакции, что очень плохо, если на вашем сайте много пользователей. Например, если у вас есть пользователь, который что-то ищет на вашем сайте, и запрос занимает несколько минут, другие пользователи не смогут использовать ваш сайт в течение этого периода, потому что вся таблица заблокирована.
InnoDB, с другой стороны, использует блокировку на уровне строк, что означает, что эта строка является единственной строкой, заблокированной из таблицы во время транзакции. InnoDB может быть медленнее при поиске, потому что он не предлагает полнотекстовый поиск, такой как MyISAM, но это не большая проблема, если сравнить его с блокировкой MyISAM на уровне таблицы. Если вы используете InnoDB, как и многие большие сайты, то вы можете использовать серверную поисковую систему, такую как Sphinx для полнотекстового поиска. Или вы можете даже использовать таблицу MyISAM для поиска, как предложено f00
. Я лично рекомендовал InnoDB главным образом из-за функции блокировки на уровне строк, а также потому, что вы можете реализовать полнотекстовый поиск многими другими способами.
По сути, если у вас есть приложение для доски объявлений с множеством вариантов выбора, вставок, а также обновлений, InnoDB, вероятно, является наиболее подходящим выбором.
Но если вы не создаете что-то подобное (или что-то другое для зарегистрированных пользователей) и работаете в основном со статическим контентом (или с большим количеством операций чтения, чем записи), то вы можете использовать MyISAM.