InnoDB или MyISAM - почему не оба? - PullRequest
5 голосов
/ 02 января 2011

Я читал различные темы, которые лучше между InnoDB и MyISAM.Кажется, что дебаты должны использовать или другой.Разве нельзя использовать оба, в зависимости от таблицы?

Каковы недостатки в этом?Насколько я могу судить, двигатель можно настроить во время команды CREATE TABLE.Поэтому некоторые таблицы, которые часто читаются, могут быть установлены в MyISAM, но таблицы, для которых требуется поддержка транзакций, могут использовать InnoDB.

Ответы [ 4 ]

14 голосов
/ 02 января 2011

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

InnoDB, с другой стороны, использует блокировку на уровне строк, что означает, что эта строка является единственной строкой, заблокированной из таблицы во время транзакции. InnoDB может быть медленнее при поиске, потому что он не предлагает полнотекстовый поиск, такой как MyISAM, но это не большая проблема, если сравнить его с блокировкой MyISAM на уровне таблицы. Если вы используете InnoDB, как и многие большие сайты, то вы можете использовать серверную поисковую систему, такую ​​как Sphinx для полнотекстового поиска. Или вы можете даже использовать таблицу MyISAM для поиска, как предложено f00. Я лично рекомендовал InnoDB главным образом из-за функции блокировки на уровне строк, а также потому, что вы можете реализовать полнотекстовый поиск многими другими способами.

По сути, если у вас есть приложение для доски объявлений с множеством вариантов выбора, вставок, а также обновлений, InnoDB, вероятно, является наиболее подходящим выбором. Но если вы не создаете что-то подобное (или что-то другое для зарегистрированных пользователей) и работаете в основном со статическим контентом (или с большим количеством операций чтения, чем записи), то вы можете использовать MyISAM.

3 голосов
/ 02 января 2011

Да, действительно, вы можете использовать оба в одной базе данных, вы можете выбрать для каждой таблицы отдельно.

1 голос
/ 08 февраля 2015

Короче говоря, InnoDB хорош, если вы работаете над чем-то, что требует надежной базы данных, которая может обрабатывать множество инструкций INSERT и UPDATE.

, а MyISAM хорош, если вам нужна база данных, которая в основномберут много инструкций по чтению (SELECT), а не по записи (INSERT и UPDATES), учитывая его недостаток в блокировке таблицы.

Вы можете захотеть проверить; Плюсы и минусы InnoDB Плюсы и минусы MyISAM

0 голосов
/ 02 января 2011

Вы выбираете не InnoDB или MyISAM на уровне базы данных, а вместо этого на уровне таблицы.Таким образом, в одной базе данных у вас может быть несколько таблиц, на которых работает движок InnoDB, а некоторые - на MyISAM.Как вы указали, вы можете использовать InnoDB для таблиц, требующих транзакций и т. Д., И MyISAM, где вам нужны другие функции, например полнотекстовый поиск.

...