Когда использовать MyISAM и InnoDB?

MyISAM разработан с идеей, что ваша база данных запрашивается гораздо больше, чем ее обновление, и в результате она выполняет очень быстрые операции чтения. Если ваше чтение для записи (вставить | обновление) составляет менее 15%, лучше использовать MyISAM.

InnoDB использует блокировку на уровне строк, имеет возможности фиксации, отката и восстановления после сбоя для защиты пользовательских данных. Он поддерживает транзакцию и отказоустойчивость

выше различия между MyISAM и InnobDB являются правильными? , пожалуйста, укажите, есть ли какие-либо другие ограничения для MYISAM и InnobDB. когда я должен использовать MyiSAM или когда Innodb? Спасибо!

Ответ 1

Читайте о Двигатели хранения.

MyISAM:

MyISAM механизм хранения в MySQL.

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

InnoDB:

Механизм хранения InnoDB в MySQL.

  • Поддержка транзакций (поддержка поддержки ACID).
  • Блокировка уровня строки. Имея более мелкозернистый механизм блокировки, вы получаете более высокий concurrency по сравнению с, например, MyISAM.
  • Ограничения внешнего ключа. Позволяя вам предоставить базе данных гарантию целостности состояния базы данных и отношения между таблицами.
  • InnoDB более устойчив к повреждению таблиц, чем MyISAM.
  • Поддержка большого пула буферов для данных и индексов. Буфер ключей MyISAM предназначен только для индексов.
  • MyISAM застаивается; все будущие улучшения будут в InnoDB. Это было сделано совершенно ясно с выходом из версии 8.0.

Ограничения MyISAM:

  • Нет внешних ключей и каскадных удалений/обновлений
  • Отсутствие целостности транзакций (соответствие ACID)
  • Нет откатных возможностей
  • 4,284,867,296 ограничение по строке (2 ^ 32) - это старое значение по умолчанию. Конфигурируемый предел (для многих версий) составляет 2 ** 56 байт.
  • Максимум 64 индекса на таблицу

Ограничения InnoDB:

  • Нет полной индексации текста (версия ниже версии 5.6 mysql)
  • Невозможно сжать для быстрого, только для чтения (5.5.14 введено ROW_FORMAT=COMPRESSED)
  • Вы не можете восстановить таблицу InnoDB

Для краткого понимания прочитайте ссылки ниже:

Ответ 2

Используйте MyISAM для очень неважных данных или если вам действительно нужны эти минимальные преимущества. Производительность чтения не лучше в каждом случае для MyISAM.

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

EDIT. Для чтения-производительности эта ссылка показывает, что innoDB часто на самом деле не медленнее, чем MyISAM: http://www.mysqlperformanceblog.com/2007/01/08/innodb-vs-myisam-vs-falcon-benchmarks-part-1/ p >