Quick answer: Use InnoDB for almost everything. It supports transactions, foreign keys, and row-level locking, and it recovers cleanly after a crash. MyISAM is an older engine with table-level locking and no transactions - suitable only for read-heavy, non-critical data. InnoDB is the default in modern MySQL and MariaDB for good reason.
| Feature | InnoDB | MyISAM |
|---|---|---|
| Transactions | Yes | No |
| Locking | Row-level | Table-level |
| Foreign keys | Yes | No |
| Crash recovery | Strong | Weak |
| Best for | Almost all workloads | Read-heavy, non-critical |
Row-level locking lets many users write concurrently without blocking each other, transactions protect data integrity, and crash recovery prevents the corruption MyISAM is prone to. For any site handling orders, users, or important data, InnoDB is the safe default.
How do I check which engine a table uses?
Run SHOW TABLE STATUS or query information_schema.tables - the Engine column shows InnoDB or MyISAM.
Can I convert MyISAM to InnoDB?
Yes, with ALTER TABLE ... ENGINE=InnoDB. Back up first and convert during low traffic.
On a SoftSys managed Linux VPS our team configures MySQL and MariaDB with the right engine and settings for your application.