Самая большая проблема с MyISAM заключается в том, что он использует блокировку на уровне таблицы для команд UPDATE и DELETE, поэтому, если вы удаляете запись из вашей базы данных, все остальные обновления или удаления будут блокироваться во время выполнения этого запроса.
InnoDB использует блокировку на уровне строк, поэтому блокируется только обновляемая запись, как и должно быть по очевидным причинам.
InnoDB также имеет много полезных функций, таких как поддержка транзакций и ограничений внешнего ключа, что делает его предпочтительным для меня и других разработчиков.
Что касается скорости чтения, InnoDB сохраняет свою запись, упорядоченную по первичному ключу, что позволяет намного быстрее извлекать записи, где вы ищете по PK (такие вещи, как SELECT foo FROM bar WHERE id = baz;
). MyISAM хранит свои записи более или менее в порядке их добавления в базу данных, что означает, что может быть быстрее, если вы в основном выполняете поиск по дате добавления записей, например, такие как финансовое отслеживание, когда вы может захотеть захватить все транзакции, которые произошли в определенный день.
Википедия подробно описывает основные различия между двумя движками, но достаточно сказать, что в 99% случаев вы, вероятно, захотите использовать InnoDB.
Единственное обстоятельство, о котором я могу подумать, это то, что MyISAM имеет явную победу, если вам нужна поддержка полнотекстового поиска. MyISAM поддерживает FTS, а InnoDB - нет. Даже тогда вам, вероятно, лучше использовать стороннюю систему, такую как Sphinx, а не использовать MyISAM.