Любой программист, использующий в своей работе MySQL, хоть раз в жизни задавался вопросом: какой движок использовать для таблиц? InnoDB или MyISAM? Разумеется, сейчас есть масса других движков, но в данной статье я рассмотрю самые распространенные и устоявшиеся.
Рассмотрим наши любимые движки по их основным отличительным функциональным особенностям. Основные функции для сравнения я поместил в таблице:
Функция | MyISAM | InnoDB |
---|---|---|
Высокая скорость при чтении | + | - |
Транзакционность | - | + |
Полнотекстовый поиск | + | 5.6+ |
Внешние ключи | - | + |
MyISAM оптимизирован для таблиц, к которым активно обращаются на чтение и практически не обращаются на запись.
Если вам требуется транзакционность, используйте InnoDB, ведь он изначально проектировался с учетом поддержки транзакций. MyISAM напротив, не поддерживает транзакции.
Возможность полнотекстового поиска сейчас есть у обоих движков, но следует учитывать, что у MyISAM она была всегда, а у InnoDB появилась начиная с версии MySQL 5.6.
InnoDB — движок для полноценных реляционных баз данных с внешними ключами. В MyISAM вы можете забыть о целостности и связности данных. То, что в MyISAM нельзя оперировать со связями, я считаю его основным минусом, склоняясь тем самым в сторону InnoDB.
Таким образом, упрощенный обзор ключевых характеристик заставляет сделать вывод о том, что лучше по умолчанию использовать движок InnoDB. Если он в процессе тестирования чем-то не устроит, или его функционал покажется избыточным, то всегда можно на начальных этапах провести сравнительный бенчмаркинг на ваших данных и SQL-запросах, и перейти на другой движок, который показал в вашей ситуации себя лучше.