Die meiste Zeit verbringe ich damit, mit meinen Kunden an der umfassenden Überprüfung der Datenbankleistung zu arbeiten . Das Beste am Gesundheitscheck-Engagement ist, dass ich viele neue Leute kennenlerne und viele verschiedene Geschichten erzähle. Kürzlich wurde ich von einem der DBAs, die neben SQL Server auch an MySQL arbeiten, gefragt, was meine bevorzugte Engine für MySQL ist – MyISAM oder InnoDB?
Ich denke, es ist eine sehr interessante Frage, die man im Jahr 2019 stellen sollte, da ich glaube, dass das MySQL-Team selbst diese Entscheidung bereits seit MySQL-Version 5.5 getroffen hat. Sie haben InnoDB bereits seit MySQL 5.5 als ihre Standard-Engine ausgewählt.
Hier sind meine fünf Hauptgründe für InnoDB
- InnoDB unterstützt Sperren auf Zeilenebene, was für die Leistung entscheidend ist. MyISAM unterstützt nur das Sperren auf Tabellenebene, wodurch ein großer Engpass entsteht, wenn Ihre Tabelle häufig aktualisiert wird.
- InnoDB implementiert Transaktionen, die für geschäftskritische Datenbankanwendungen, die sowohl im Bankwesen als auch im E-Commerce eingesetzt werden, von entscheidender Bedeutung sind.
- InnoDB unterstützt Beziehungsbeschränkungen wie Fremdschlüssel, was es gegenüber MyISAM, das keine unterstützt, relationaler datenbankfreundlicher macht.
- InnoDB unterstützt ACID-Transaktionen (Atomicity, Consistency, Isolation, Durability) und entspricht damit vollständig den RDBMS-Regeln, die MyISAM nicht unterstützt.
- InnoDB verwaltet Indizes und Basistabellen mit Hilfe des Speichermanagers intern mit Memory Buffer Pool, was äußerst performant ist. MyISAM verwendet Plattendateien hauptsächlich für die Basistabelle, die nicht auf Leistung optimiert ist.
Mein Vorschlag ist, dass Sie, wenn Sie die Auswahl der Engine treffen müssen, entweder Ihr MySQL die Standard-Engine bestimmen lassen oder InnoDB auswählen, das die neuesten Funktionen von RDBMS enthält.
Ich schreibe derzeit ein Whitepaper zu diesem Thema. Sobald das Whitepaper veröffentlicht ist, werde ich es mit Ihnen allen teilen, damit Sie es darüber lesen können.