MyISAM was MySQL’s original default storage engine; InnoDB has been the default since MySQL 5.5, and for almost any modern use case, the choice isn’t really a choice anymore.
Why InnoDB Won
- Transactions and ACID compliance — MyISAM has neither.
- Row-level locking — MyISAM locks the entire table on writes, brutal under concurrent load.
- Crash recovery — InnoDB’s write-ahead log makes it far more resilient to unclean shutdowns.
- Foreign key constraints — MyISAM silently ignores them.
-- Check what engine a table is using SHOW TABLE STATUS WHERE Name = 'legacy_table'; -- Convert an old MyISAM table to InnoDB ALTER TABLE legacy_table ENGINE = InnoDB;
The only remaining legitimate case for MyISAM is a specific need for its full-text search implementation in a legacy setup that predates InnoDB’s own full-text support (added in MySQL 5.6) — otherwise, InnoDB is the correct default for essentially everything.