MyISAM and InnoDB are the two most widely used storage engine which is the underlying software component that a database management system uses to create, read, update, and delete (CRUD) data from the database.1 There are other database engines that each is more suited to a certain situation more than others. Therefore, there is not an engine that is the best at everything.1
Although MySQL database chose InnoDB as the default storage engine4, it has some advantage and disadvantages against MyISAM. The main difference between these two engines is there is no possibility of row level locking in MyISAM, on the other hand, InnoDB allows row-level locking. This means queries can run simultaneously on the same table, provided they do not use the same row.1 MyISAM has table-level locking.2 This means subsequent queries will only be executed after the current one is finished.1 This feature in InnoDB is also known as concurrency.1 Based on this feature, InnoDB allows better performance on sites with heavy traffic (row locking).3
Other differences are;
· While InnoDB supports transactions by tables, MyISAM does not.2
· InnoDB does not support FULLTEXT index while MyISAM supports.2
· Performance speed of MyISAM table is much higher as compared with tables in InnoDB.2
· InnoDB supports ACID property while MyISAM does not support.2
· MyISAM does not support Foreign-Key referential-integrity constraints while InnoDB supports2; therefore, InnoDB has better maintenance of the DB.
· MyISAM offers no data integrity while InnoDB does.1 If there is a crash, InnoDB will allow auto recover by using a transactional log.
When would one choose to use MyISAM instead of InnoDB? In general, if a MyISAM table has a problem, which will be limited to that table, rather than affecting the functionality of other tables or databases as can sometimes happen when an InnoDB table has a problem.5 For this reason, MyISAM is recommended whenever possible in serves with multiple sites.5