Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySql:MyISAM vs. InnoDB!

Der Hauptunterschied besteht darin, dass InnoDB Transaktionen unterstützt, während MyISAM dies nicht tut.

Es gibt zahlreiche andere Unterschiede, aber die häufigsten sind mir bekannt:

  • MyISAM galt normalerweise als schneller bei der Suche, aber die jüngsten InnoDB-Verbesserungen beseitigen diesen Unterschied und verbessern die Leistung bei hoher gleichzeitiger Arbeitslast
  • InnoDB unterstützt Transaktionen, während MyISAM dies nicht tut
  • InnoDB unterstützt referentielle Integrität, während MyISAM dies nicht tut
  • InnoDB handhabt Indizes etwas anders und speichert den Primärschlüssel als Teil jedes Index (wodurch Indizes mehr Platz auf der Festplatte einnehmen, aber auch ein abdeckender Index wahrscheinlicher wird)
  • MyISAM führt Sperren auf Tabellenebene durch, während InnoDB Sperren auf Zeilenebene durchführen kann
  • In den MySQL-Konfigurationsdateien werden andere Speicher-/Puffer-/Indexeinstellungen verwendet
  • InnoDB wird normalerweise eine bessere Wiederherstellung nach einem Absturz nachgesagt
  • Wie in einer anderen Antwort erwähnt, werden die Daten anders auf der Festplatte gespeichert. Ich glaube, InnoDB ist in diesem Bereich konfigurierbar und kann bei Bedarf eine Datei pro Tabelle usw. haben

Ich bin mir sicher, dass eine Google-Suche oder die MySQL-Site zahlreiche weitere Unterschiede im Detail aufzeigen werden.