X

MySQL: отличия между MyISAM и InnoDB

Нашел хорошее сравнение движков MyISAM и InnoDB..

Оригинал статьи тут: http://itif.ru/otlichiya-myisam-innodbа я привожу тут только сравнительную таблицу

Описание MyISAM InnoDB
Транзакционный движек
Транзакция (Transaction) — блок операторов SQL , который в случае ошибки в одном запросе, возвращается к предыдущему состоянию (Rollback), и только в случае выполнения всех запросов подтверждается (Commit)
Нет Да
Поддержка внешних ключей
Внешние ключи — это способ связать записи в двух таблицах по определенным полям так, что при обновлении поля в родительской автоматически происходит определенное изменение поля в дочерней (дочернюю и родительскую выбираешь при создании ключа; точнее, создаешь ключ в дочерней, который ссылается на родительскую).
Нет Да
Блокировка.
Блокировка на уровне строк, т.е. если процессу нужно обновить строку в таблице, то он блокирует только эту строку, позволяя другим обновлять другие строки параллельно
Блокировка на уровне таблиц Блокировка на уровне строк
Одновременные запросы к разным частям таблицы. Медленнее Быстрее
При смешанной нагрузке в таблице (select/update/delete/insert) Медленнее Быстрее
Операция Insert Быстрее Медленнее, ибо есть оверхед на транзакцию, но это цена надежности
Если преобладают операции чтения (SELECT) Работает быстрее Работает медленнее
Deadlock
Deadlock — ситуация в многозадачной среде или СУБД, при которой несколько процессов находятся в состоянии бесконечного ожидания ресурсов, захваченных самими этими процессами.
Не возникают Возможны.
Поддержка полнотекстового поиска Да Нет (доступен начиная с версии MySQL 5.6.4)
Запрос Count(*) Быстрее Медленнее
Поддержка mysqlhotcopy
Утилита mysqlhotcopy представляет собой Perl-сценарий, использующий SQL-команды LOCK TABLES, FLUSH TABLES и Unix-утилиты cp или scp для быстрого получения резервной копии базы данных.
Да Нет
Файловое хранение таблиц Каждой таблице отдельный файл Данные при настройках по умолчанию хранятся в больших совместно используемых файлах
Бинарное копировании таблиц?
Табличные файлы можно перемещать между компьютерами разных архитектур и разными операционными системами без всякого преобразования.
Да Нет
Размер таблиц в БД Меньше Больше
Поведение в случае сбоя Крашится вся таблица По логам можно все восстановить
В случае хранения «логов» и подобного Лучше Хуже

От себя хочу заметить, что в таблице написано, что в случае MyISAM таблица "крашится", а в случае innodb "можно восстановить". Так вот, в случае MyISAM, все так же восстанавливается, причем легче чем в InnoDB, для этого используется утилита из стандартной поставки myisamchk.

Так же, при выборе MyISAM, бэкап/восстановление больших баз (1 TB и больше), делается намного проще чем в InnoDB, из-за возможности бинарного копирования.

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

Категории: MySQL Базы данных
Тэги: innodbmyisam