Datenbankengine: MyISAM oder InnoDB?


Wenn Sie Probleme mit referenzieller Integrität (Fremdschlüssel) oder mit der Transaktionssicherheit haben, kann ein Blick auf die Datenbank-Engine hilfreich sein. In den meisten Fällen wird versucht, eine (bei der Engine) nicht verfügbare Funktion aufzurufen. Es muss beachtet werden, dass es wichtige Unterschiede zwischen den gängigen Datenbank-Engines MyISAM und InnoDB gibt.

 Im der Anwendung phpMyAdmin können Sie die Datenbank-Engine bei der Spalte „Typ“ nachsehen.

 

Unterschiede MyISAM und InnoDB

MyISAM ist perfekt für große Datenbanken geeignet, wo es viele Lese-Operationen und nur sehr wenige Schreib-Operationen gibt. Der Fachbegriff für ein solches Anwendungsgebiet ist Data-Warehousing. Der Vorteil dabei ist, dass eine MyISAM-Datenbank bei Lese-Operationen schnelle Ergebnisse liefert und sehr gut mit extrem großen Datenmengen umgehen kann.

 

Der Nachteil von MyISAM-Tabellen ist, dass Fremdschlüssel und Transaktionen nicht unterstützt werden. Dadurch können Befehle wie "on update cascade , on delete cascade , begin transaction , ..." nicht verwendet werden.

Wichtig: Wenn man die Befehle trotzdem einsetzt, obwohl man eine MyISAM-Datenbank verwendet, bekommt man unter Umständen keine Fehlermeldung! Der Befehl wird einfach ignoriert. Man sollte deshalb immer die DB-Engine bewusst für seine Zwecke wählen.

 

Sollten Sie auf die oben genannten Funktionen bei Ihrer Webanwendung nicht verzichten wollen, dann muss eine InnoDB-Datenbank gewählt werden.

Hinweis: Eine InnoDB Datenbank kann auf my.world4you.com kostenpflichtig erworben werden. MyISAM Datenbanken sind je nach Webhosting Paket inklusive.

 

Zusatzinformation

Die Besonderheiten einer MyISAM-Datenbank können hier nachgelesen werden: https://dev.mysql.com/doc/refman/5.6/en/myisam-storage-engine.html

Die Besonderheiten einer InnoDB-Datenbank können hier nachgelesen werden: https://dev.mysql.com/doc/refman/5.6/en/innodb-introduction.html

 

Hinweis: Manchmal kann es zu Problemen kommen, wenn Sie Webanwendungen lokal auf Ihrem Computer (auf der InnoDB-Engine) entwickeln und diese anschließend online auf einer anderen Datenbank-Engine hochgeladen werden. Kontrollieren Sie deshalb immer die Konfiguration, wenn Sie Projekte zwischen verschiedenen Serverumgebungen kopieren.