Default
This is the default because it is the one that gives the most performance (but soon the next version is no longer, and it is curious because for most scenarios that people who least care and use Mysql Innodb is not the most appropriate). Myisam is simpler, but mainly because it is what people most look for when using Mysql, is what made Mysql famous. It is preferred because in much of the simple applications where it is used, table relationships are not so important. Or it is, but it can very well be done by the application. There are those who like or need this control to be done in the database, but it is not the case of everyone, of every project.
When to use
If you need performance and simplicity you will opt for Myisam. If you need the most accurate controls, opt for Innodb. Usually you don’t have to choose him if you don’t need him, and you don’t know how to use his resources. And most small projects don’t need these resources. Some more "malicious" will say that if you need Innodb, then you better opt for another more complete database, which does more for you. It is true that Innodb leaves a little to be desired for some other Sgdbs. Some even say that Mysql is only a valid choice if you use Myisam. Of course others disagree.
Usually when you have a lot of reading and little writing, Myisam does better. Innodb can have advantages if the amount of truly competing writing is too large. What is more rare.
Innodb can’t be faster because he does more than Myisam. Unless Myisam was very poorly implemented, he has to be faster. It doesn’t have so much scalability that it’s different from having no performance. People sometimes confuse these things. A purely database flat file would be the fastest of all at least for certain operations.
Relationship
You can relate tables to Myisam. You just don’t do this in the template definition. There’s no way to make the relationship happen automatically, but you do it in your darlings usually without losing anything. When logic is more in the application than in the database it is common to prefer not to force the relationship and leave the JOIN
in query take care of it. Everything has advantages and disadvantages but this is another matter.
Tradeoffs
There are even simpler and probably faster database systems. For every problem, a solution. Everything is choice. You can not do magic and have everything. Although Mariadb tried to reconcile a little more these things with the engine Aria (can be used with Mysql).
Comparative
Feature |
Myisam |
Innodb |
ACID |
Not |
Yes |
Configuration of ACID behaviour |
Not |
Yes |
Protection when it breaks |
Not |
Yes* |
Automatic foreign key |
Not |
Yes |
MVCC |
Not |
Yes |
Geospatial type |
Yes |
Yes |
Indexing Geospatial |
Yes |
Not |
Indexing Full-Text |
Yes |
Yes 4 |
Data cache |
Not |
Yes |
Total capacity of the bank |
256TB |
64TB |
Occupation of disk space |
Low |
High |
Occupation of memory space |
Low |
High |
Locking |
Table |
Registering |
Concurrent reading ability** |
High |
Regular |
Concurrent writing ability** |
Low |
High |
Easy backup |
Not |
Yes |
COUNT(8) FAST* ** |
Yes |
Not |
Data compression |
reading |
Reading/Recording |
*
There are controversies (I’ve seen many reports that gives problems)
**
Depends a lot on the actual load
***
Many consider this irrelevant
Has a comparison on Wikipedia.
The
Full-text search
(FTS) has been implementing in innoDB since version 5.6.4 of Mysql, however there are some restrictions: https://dev.mysql.com/doc/refman/5.6/en/fulltext-restrictions.html– Guilherme Nascimento