MyISAM или InnoDB?

Самыми популярными движками в MySQL-базах являются MyISAM и InnoDB. Если движок выбран неправильно, то возникают проблемы с производительностью и консистентностью.
Рассмотрим особенности этих движков более подробно.

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

Несомненными преимуществами этого движка являются также полнотекстовый поиск и компрессия. Формат данных в MyISAM — кроссплатформенный, что позволяет без проблем переносить данные с одного сервера на другой путем простого копирования бинарных файлов (таблиц) баз данных.

InnoDB используется в современных версиях MySQL как движок по умолчанию.
В отличии от MyISAM InnoDB поддерживает транзакции и внешние ключи. В Percona Server используется собственный движок — XtraDB, полностью совместимый с InnoDB. Данные в InnoDB/XtraDB кэшируются. Когда большая часть данных считывается из кэша, производительность InnoDB/XtraDB в разы выше, чем у MyISAM.

Статей, посвященных сравнению MyISAM с InnoDB/XtraDB, а также MySQL c его форками, опубликовано немало (см., в частности, тест производительности здесь). Мы не будем вдаваться в теоретические подробности и ограничимся практическим советом: MyISAM нужно выбирать только в случаях, когда нужен полнотекстовый поиск. Со всеми остальными задачами прекрасно справятся InnoDB/XtraDB. Кстати, в MySQL/Percona Server 5.6+ полнотекстовый поиск для InnoDB уже поддерживается.

Оставьте комментарий