Det handlar väl egentligen vilket läs/skriv ration som kommer vara aktuellt för databasen. Dock ser jag väl flest fördelar med InnoDB då dom har row locking istället för table locking som MyISAM stödjer (tror det är självförklarande, men row locking innebär att när en SELECT/INSERT sker så låser databasen endast den aktuella raden/raderna medan table locking låser hela aktuella tabellen). Så om du kommer ha många läsningar/skrivningar samtidigt så kommer det bli långsammare på MyISAM.
Foreign keys representerar en relation till en annan tabell. Exempelvis:
User (Id, UserGroupId, Name, SaltedPassword)
UserGroup (Id, Name)
Där UserGroupId kolumnen i User tabellen är en foreign key.
Transaktionsstöd innebär att du kan ha flera commands i en transaktion och kan göra en rollback om något går fel. Lite Pseudokod:
Transaktion
Insert Into User(1, 1, "bassebhu")
Insert Into UserGroup(1, "Power User") <---- Blir fel av X anledning
Select All From User Join UserGroup On UserGroupId = Id
Avsluta Transaktion
När felet uppstår i det andra commandet kommer det att "rollbackas" d.v.s. den första inserten kommer backas. Detta görs för att det inte ska finnas felaktig data i databasen.
Vill inte säga att den ena är bättre än den andra utan jag föreslår istället att bygg upp databasen med testdata eller nått, men den mängd du förväntar dig, och gör lite benchmarks med båda databas engines och på så vis bestämma dig för vilken fungerar bäst i din situation.
