Główną różnicą jest to, że InnoDB obsługuje transakcje, podczas gdy MyISAM nie.
Istnieje wiele innych różnic, jednak te wspólne, o których wiem, to:
- MyISAM jest zwykle uważany za szybszy w wyszukiwaniu, ale ostatnie ulepszenia InnoDB usuwają tę różnicę i poprawiają wydajność obciążenia o wysokiej współbieżności
- InnoDB obsługuje transakcje, podczas gdy MyISAM nie
- InnoDB wspiera integralność referencyjną, podczas gdy MyISAM nie
- InnoDB obsługuje indeksy nieco inaczej, przechowując klucz podstawowy jako część każdego indeksu (co sprawia, że indeksy zajmują więcej miejsca na dysku, ale także zwiększa prawdopodobieństwo indeksu pokrywającego)
- MyISAM blokuje na poziomie tabeli, podczas gdy InnoDB może blokować na poziomie wiersza
- W plikach konfiguracyjnych MySQL używane są różne ustawienia pamięci/bufora/indeksu
- Zwykle mówi się, że InnoDB ma lepsze odzyskiwanie po awarii
- Jak wspomniano w innej odpowiedzi, dane są przechowywane na dysku w inny sposób. Uważam, że InnoDB można konfigurować w tym obszarze i w razie potrzeby może mieć jeden plik na tabelę itp.
Jestem pewien, że wyszukiwarka Google lub witryna MySQL pokażą wiele innych różnic bardziej szczegółowo.