MySql: MyISAM против Inno DB!

Каковы различия между типами MyISAM и Inno DB в MySql?

Ответ 1

Основное отличие заключается в том, что InnoDB поддерживает транзакции, в то время как MyISAM этого не делает.

Существует множество других различий, однако, я знаю, что:

  • MyISAM обычно считается более быстрым при поиске, но последние улучшения InnoDB устраняют эту разницу и улучшают производительность рабочей нагрузки concurrency
  • Операции поддержки InnoDB, в то время как MyISAM не выполняет
  • InnoDB обрабатывает индексы немного по-другому, сохраняя первичный ключ как часть каждого индекса (при этом индексы занимают больше места на диске, но также делают индекс покрытия более вероятным)
  • MyISAM делает блокировку уровня таблицы, в то время как InnoDB может выполнять блокировку на уровне строк.
  • Различные настройки памяти/буфера/индекса используются в файлах конфигурации MySQL.
  • Обычно InnoDB имеет улучшенное восстановление после сбоя.
  • Как уже упоминалось в другом ответе, данные хранятся на диске по-разному. Я считаю, что InnoDB настраивается в этой области и может иметь один файл на таблицу и т.д., Если требуется

Я уверен, что поиск Google или сайт MySQL будут раскрывать множество других различий более подробно.

Ответ 2

InnoDB и MyISAM

Сравнение характеристик и производительности:

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

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

Преимущества InnoDB

  • InnoDB следует использовать там, где целостность данных является приоритетом, поскольку она по своей сути заботится о них с помощью ограничений связей и транзакций.
  • Быстрее в таблицах с интенсивной записью (вставляет, обновляет), потому что он использует блокировку на уровне строк и только удерживает изменения в той же строке, которая вставлена ​​или обновлена.

Недостатки InnoDB

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

Преимущества MyISAM

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

Недостатки MyISAM

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

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

Справка: Сравнение InnoDB и MyISAM

Вы также можете ознакомиться здесь для получения дополнительной информации: MyISAM или движок InnoDB MySQL?

Надеюсь, что это поможет.

Ответ 3

MyISAM поддерживает (нестандартное SQL) полнотекстовое индексирование, которое InnoDB все еще не делает. Это единственная причина, по которой мы сегодня используем MyISAM.

Ответ 4

Самое важное различие между MyISAM и InnoDB заключается в том, что InnoDB поддерживает транзакции и внешние ключи. Если вам нужны внешние ключи и связанные функции (например, автоматически каскадные удаления), вам нужно будет использовать InnoDB.

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

Ответ 6

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

Ответ 7

Поддержка NFS

В отличие от MyISAM, у InnoDB могут быть проблемы с NFS.

От Настройка InnoDB (версия MySQL 5.5)

Внимание!

Если надежность является ваши данные, не настраивайте InnoDB на использовать файлы данных или файлы журналов в NFS объемы. Возможные проблемы в соответствии с ОС и версией NFS, и включают такие проблемы, как отсутствие защита от противоречивых сообщений, и ограничения на максимальные размеры файлов.

Ответ 8

Возможности InnoDB 1. Обеспечивает полную возможность транзакций с полным соблюдением требований ACID (Atomicity, Consistency, Isolation и Durability).

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

  2. Ключом к системе InnoDB является структура базы данных, кэширования и индексирования, в которой как индексы, так и данные кэшируются в памяти, а также сохраняются на диске. Это позволяет очень быстро восстанавливать и работать даже на очень больших наборах данных.

  3. InnoDB поддерживает ограничения внешнего ключа

  4. InnoDB поддерживает автоматическое восстановление после сбоя
  5. InnoDB поддерживает сжатие таблицы (чтение/запись)
  6. InnoDB поддерживает пространственные типы данных (без пространственных индексов)

  7. Innodb поддерживает неблокирующий ANALYZE TABLE и требуется только в том случае, если сервер работает в течение длительного времени, так как он погружается в статистику индекса и получает информацию о индексе при открытии таблицы.

  8. Innodb не имеет отдельных файлов индекса, поэтому их не нужно открывать.

  9. Innodb строит свои индексы по одной строке за раз в порядке первичного ключа (после ALTER), что означает, что деревья индексов не построены в оптимальном порядке и фрагментированы. В настоящее время нет способа дефрагментировать индексы InnoDB, поскольку InnoDB не может создавать индексы, сортируя в MySQL 5.0. Даже отбрасывание и восстановление индексов InnoDB может привести к фрагментированным индексам, в зависимости от данных.

  10. Таблица может содержать не более 1000 столбцов.

  11. Внутренняя максимальная длина ключа InnoDB составляет 3500 байт, но сама MySQL ограничивает это до 3072 байт. (1024 байта для не-64-разрядных построений до MySQL 5.0.17, а для всех строит до 5.0.15.)

  12. Размер страницы базы данных по умолчанию в InnoDB составляет 16 КБ. Перекомпилировав код, вы можете установить его значения от 8 КБ до 64 КБ. Вы должны обновить значения UNIV_PAGE_SIZE и UNIV_PAGE_SIZE_SHIFT в исходном файле univ.i.
  13. Таблицы InnoDB не поддерживают индексы FULLTEXT.

    Функции MYISAM

    • Поддержка транзакций
    • Блокировка уровня таблицы
    • Обеспечивает полнотекстовый поиск
    • Нет ограничений для данных в таблице.
    • fast COUNT (*) s (когда WHERE, GROUP BY или JOIN не используются)
    • индексирование полного текста
    • меньший размер диска
    • очень высокое сжатие таблицы (только для чтения)
    • Типы и индексы пространственных данных (R-дерево)
  14. Используя DATA DIRECTORY = '/path/to/data/directory' или INDEX DIRECTORY = '/path/to/index/directory', вы можете указать, где должен находиться механизм хранения MyISAM поместите файл данных таблицы и индексный файл. Каталог должен быть полным именем пути к каталогу, а не относительным путем.

вы можете найти более подробную информацию по адресу http://faisalbhagat.blogspot.com/2014/09/innodb-vs-myisam.html

Ответ 9

Основное отличие заключается в том, что InnoDB поддерживает transactions, тогда как MyISAM этого не делает.

Ответ 10

Ниже приведено описание различий между InnoDB и MyIsam:

Различия между InnoDB и MyIsam

Немного отличий:

  • MYISAM не поддерживает транзакции с базой данных,
  • INNODB предоставит транзакции
  • MYISAM обеспечивает блокировку уровня таблицы,
  • INNODB обеспечивает блокировку уровня строки
  • INNOBD поддерживает внешние ключи, MYISAM не...

Ответ 11

MyISAM более убедителен, когда дело доходит до резервного копирования, поскольку довольно просто просто заблокировать все таблицы и скопировать файлы непосредственно в файловую систему. (mysqlhotcopy, которая является perl- script, является частью mysql afaik)

InnoDB немного сложнее, и просто копировать файлы не удастся, так как они не могут быть восстановлены на другой машине из коробки.

Однако есть коммерческое программное обеспечение, которое предлагает горячую копию InnoDB.