Отличие MyISAM от InnoDB
При создании таблиц нужно понимать разницу между MyISAM и InnoDB, так как у каждой из этих систем хранения данных есть как плюсы, так и минусы. В этой статье я постараюсь простым языком рассказать об отличиях. Зачастую этот вопрос задается на собеседованиях, и ответ знать на него, безусловно, нужно.
Предлагаю рассмотреть следующую таблицу, а лучше даже ее выучить.
Описание | MyISAM | InnoDB |
---|---|---|
Поддержка транзакций | нет | да |
Поддержка внешних ключей | нет | да |
Блокировка | Блокировка на уровне таблиц | Блокировка на уровне строк |
Одновременные запросы к разным частям таблицы | Медленнее | Быстрее |
При смешанной нагрузке в таблице (select/update/delete/insert) | Медленнее | Быстрее |
Операция Insert | Быстрее | Медленнее, ибо есть оверхед на транзакцию, но это цена надежности |
Если преобладают операции чтения (SELECT) | Работает быстрее | Работает медленнее |
Ситуации Deadlock | Не возникают | Возможны. |
Поддержка полнотекстового поиска | Да | Нет (доступен начиная с версии MySQL 5.6.4) |
Запрос Count(*) | Быстрее | Медленнее |
Поддержка mysqlhotcopy | Да | Нет |
Файловое хранение таблиц | Каждой таблице отдельный файл | Данные при настройках по умолчанию хранятся в больших совместно используемых файлах |
Бинарное копировании таблиц? | Да | Нет |
Размер таблиц в БД | Меньше | Больше |
Поведение в случае сбоя | Крашится вся таблица | По логам можно все восстановить |
В случае хранения «логов» и подобного | Лучше | Хуже |
Облако тегов
Следующая статья
Транзакции
Транзакция - операция, которая содержит в себе один или несколько запросов к БД. Цель транзакций - выполнить все запросы к базе, а если что-то не выполняется, то не засчитывать предыдущие запросы. Также в транзакции входит механизм изоляции, который позволяет решать проблемы при совместном доступе к данным. Запомните основное правило транзакций: "Либо она выполняется полностью, либо не выполняется совсем". Существует 2 фундаментальных понятия: ROLLBACK и COMMIT.