Wenn größere Websites langsam laufen, liegt das häufig daran, dass ihre Da­ten­ban­ken nicht optimiert wurde. Ordnung ist das halbe Leben – das trifft auch auf das digitale zu. Bei stetig wach­sen­den Da­ten­be­stän­den braucht es ein passendes Da­ten­bank­ma­nage­ment­sys­tem oder kurz DBMS. Ein solches DBMS ist MySQL, mit dem Sie große Da­ten­men­gen un­kom­pli­ziert ver­ar­bei­ten, ablegen und dauerhaft auf­be­wah­ren können.

Bei der Spei­che­rung der Daten in MySQL spielt InnoDB eine wichtige Rolle. Bei InnoDB handelt es sich um ein Spei­cher­sub­sys­tem, dass sich in den letzten Jahren ins­be­son­de­re dank besserer Per­for­mance und Zu­ver­läs­sig­keit gegen andere Speicher-Engine durch­set­zen konnte. Wir erläutern, was InnoDB genau ist, welche Nachteile es mit sich bringt und wie es sich vom Spei­cher­sub­sys­tem MyISAM un­ter­schei­det.

Managed Database Services
Da­ten­ban­ken – Auf´s We­sent­li­che kon­zen­trie­ren
  • IONOS Cloud-Partner: Die Experten für Ihren Datenbank-Betrieb
  • Flexibel: Maß­ge­schnei­der­te Datenbank-Lösungen ganz auf Ihre Be­dürf­nis­se
  • Re­chen­zen­tren in Deutsch­land: Ihre Daten sind sicher

Was ist InnoDB?

InnoDB hat sich vom Spei­cher­sub­sys­tem hoch zur Allzweck-Speicher-Engine für MySQL ent­wi­ckelt. Die hohe Zu­ver­läs­sig­keit auch bei hoher Leistung hat dazu geführt, dass MySQL InnoDB ab Version 5.6 zur Standard-Speicher-Engine gemacht hat.

Hinweis

MySQL ist eine Open-Source-Datenbank, die den Einsatz ver­schie­de­ner Speicher-Engines erlaubt. Das macht die Datenbank so flexibel für das Web­hos­ting. Neben InnoDB und dem of­fi­zi­el­len Vorgänger MyISAM gibt es noch weitere Engines – wie zum Beispiel Ber­ke­leyDB, CSV, NDB und Federated Engine.

MySQL sorgt als Da­ten­bank­ma­nage­ment­sys­tem dafür, dass sich Daten in einer Tabelle speichern, in­de­xie­ren und abfragen lassen. Geht es etwa darum, kleine Da­ten­men­gen in großer Zahl zu lesen und zu schreiben, wie bei Websites oder Apps, oder sollen Daten trans­ak­ti­ons­si­cher ver­ar­bei­tet werden, liefert die Software die passende Lösung. Durch InnoDB erhält MySQL die hierfür er­for­der­li­che Speicher-Engine, die sich wie ein Modul verhält, das flexibel in die Software in­te­griert werden kann. MySQL bestimmt dabei aber immer die Art, wie die Daten einer Datenbank ge­spei­chert werden.

Hinweis

Da­ten­ban­ken bestehen aus Tabellen, die beim Anlegen einer be­stimm­ten Speicher-Engine wie InnoDB zu­ge­wie­sen werden.

Die Daten werden von den meisten Engines auf Da­ten­trä­ger ge­spei­chert oder sie werden für einen schnellen Zugriff im Haupt­spei­cher gehalten. InnoDB er­mög­licht es, dass Da­ten­trans­ak­tio­nen von­ein­an­der isoliert ablaufen: Erst, wenn eine Trans­ak­ti­on ab­ge­schlos­sen ist, wird sie auf das jeweilige Spei­cher­me­di­um ge­schrie­ben. Das ver­hin­dert un­voll­stän­di­ge Zugriffe auf eine angelegte Datenbank.

Hinweis

Trans­ak­tio­nen sind Da­ten­pa­ke­te aus mehreren Ope­ra­tio­nen, die un­trenn­bar zu­sam­men­ge­hö­ren. Wenn eine Operation nicht aus­ge­führt werden kann, ist die gesamte Trans­ak­ti­on fehl­ge­schla­gen. Um das zu beheben muss nicht nur die feh­ler­haf­te Operation, sondern es müssen auch alle vor­he­ri­gen rück­gän­gig gemacht werden. Das fordert mehr Zeit als eine reine Operation, aber nur so lässt sich eine kon­sis­ten­te Datenbank si­cher­stel­len.

Warum nutzt MySQL InnoDB?

Jede InnoDB-Tabelle ordnet die Daten auf dem Da­ten­trä­ger an. Dadurch ist der Zugriff etwas langsamer, aber deutlich sicherer, da jede Tabelle mit einem Pri­mär­schlüs­sel optimiert ist. Die Da­ten­aus­wahl ist dabei ver­hält­nis­mä­ßig schneller, das Einfügen und Ak­tua­li­sie­ren aber eben langsamer. Deshalb eignet sich InnoDB als MySQL Speicher-Engine vor allem für große Da­ten­ban­ken und ins­be­son­de­re dann, wenn viele Daten mit­ein­an­der verknüpft sind.

Wie bereits erwähnt, hängen die Daten einer Trans­ak­ti­on bei InnoDB zusammen. Wenn Daten gelöscht werden, löscht InnoDB alle re­fe­ren­zier­ten Daten au­to­ma­tisch mit. Das macht es für den Anwender we­sent­lich einfacher, die re­fe­ren­ti­el­le In­te­gri­tät der Datenbank ein­zu­hal­ten. Diese re­fe­ren­ti­el­le In­te­gri­tät muss al­ler­dings im Vorfeld fest­ge­legt werden, sonst wird sie nicht au­to­ma­tisch ein­ge­hal­ten. Genauso lassen sich bei­spiels­wei­se auch Schreib­zu­grif­fe auf Da­ten­sät­ze sperren.

Die Ta­bel­len­struk­tur von InnoDB wird in frm-Dateien, Nutzdaten und Indizes in einem Ta­bel­len­raum ge­spei­chert, der mit der Datenbank verbunden ist und sich über eine bis mehrere Dateien er­stre­cken kann. Auch hier greift die re­fe­ren­ti­el­le In­te­gri­tät: Die Kon­fi­gu­ra­ti­on des Ta­bel­len­raums kann sich auf ver­schie­de­ne Ver­zeich­nis­se verteilen, dies muss aber zu Beginn der Arbeit ein­ge­stellt werden und lässt sich nicht nach­träg­lich anpassen. Man muss sich die Arbeit mit einer InnoDB-Tabelle wie das Arbeiten mit einer Fest­plat­ten­par­ti­ti­on vor­stel­len, wo nach­träg­li­che An­pas­sun­gen zu einem Da­ten­ver­lust führen können.

Das wohl pro­mi­nen­tes­te Beispiel, das auf InnoDB zu­rück­greift, ist mediawiki, die Software, die unter anderem die Grundlage für die Website Wikipedia bildet.

Hinweis

Ein passendes Da­ten­bank­sys­tem ist eine der wich­tigs­ten Kom­po­nen­ten einer er­folg­reich geführten Web­an­wen­dung. Mit den Web­hos­ting-Lösungen von IONOS erhalten Sie leis­tungs­star­ke Datenbank-Power im maß­ge­schnei­der­ten Paket mit Webspace, Ar­beits­spei­cher und eigener Domain!

Was sind die Vor- und Nachteile der Kom­bi­na­ti­on aus MySQL und InnoDB?

Grund­sätz­lich ist InnoDB jünger und moderner als andere MySQL-Speicher-Engines. Die Engine ist aber auch komplexer und setzt eine we­sent­lich leis­tungs­stär­ke­re Datenbank-Umgebung voraus. Weil aber Web­an­wen­dun­gen selbst immer komplexer werden, sind Betreiber auf die Mög­lich­kei­ten (Trans­ak­tio­nen, Fremd­schlüs­sel), die MySQL dank InnoDB bieten kann, zunehmend an­ge­wie­sen: Alle Vorgänge auf einer Webseite beruhen auf dem Auslesen von Datenbank-Inhalten. Durch InnoDB kann die Re­ak­ti­ons­zeit – etwa, wenn Beiträge ak­tua­li­siert oder neue Artikel angelegt werden – zwar ver­lang­samt werden. Der ent­schei­den­de Part– die Aus­lie­fe­rung der neuen Inhalte an den User – erfolgt jedoch deutlich schneller.

Vor- und Nachteile halten sich bei InnoDB die Waage, sofern es um eine ge­wöhn­li­che, moderne Website geht. Bei einem Webshop hingegen werden die Grenzen schnell sichtbar: Hier finden etwa beim Bu­chungs­sys­tem viele Schreib­zu­grif­fe statt. Das schreib­ge­schütz­te Schlüs­sel­sys­tem von InnoDB macht dann also wenig Sinn. Statt­des­sen verwendet man in diesem Zu­sam­men­hang eher Tabellen, die Schreib­zu­grif­fe besser handhaben, wie zum Beispiel MyISAM.

Der mit Abstand wich­tigs­te Punkt, wenn MySQL InnoDB verwendet: Feh­ler­haf­te Än­de­run­gen innerhalb der Da­ten­ban­ken können dazu führen, dass die gesamte Website un­brauch­bar wird. Vor jeder Änderung sollte deshalb ein Back-up der be­stehen­den Datenbank angelegt werden. Genau für diesen Fall verwendet InnoDB ein Trans­ak­ti­ons­pro­to­koll, das im Feh­ler­fall eine au­to­ma­ti­sche Wie­der­her­stel­lung un­ter­stützt.

Was ist der Un­ter­schied zwischen InnoDB und MyISAM?

MySQL un­ter­stützt seit Version 5 über zehn ver­schie­de­ne Speicher-Engines. Am be­kann­tes­ten ist MyISAM. Diese Engine speichert Daten der einzelnen Tabellen in zwei Dateien, eine für die Datei, eine für den Index. ISAM steht für Indexed Sequential Access Method (dt. Index-se­quen­zi­el­le Zu­griffs­me­tho­de) – es ist also nicht möglich, dass mehrere User oder An­wen­dun­gen gleich­zei­tig in einer Tabelle schreiben. Das se­quen­zi­el­le Speichern erlaubt immer nur den Schreib­zu­griff durch eine Anwendung. Gelesen werden kann die Tabelle dafür aber von mehreren Usern gleich­zei­tig. Wenn viele kleine Da­ten­pa­ke­te schnell von mehreren Anwendern gleich­zei­tig gelesen werden müssen, ist MyISAM un­schlag­bar.

InnoDB ent­spricht dem ACID-Standard (Atomicity Con­sis­ten­cy Isolation Durability). Alle Trans­ak­tio­nen laufen von­ein­an­der isoliert ab, aber es können beliebig viele An­wen­dun­gen gleich­zei­tig Daten in eine Tabelle schreiben. Bei der Da­ten­ab­fra­ge, dem SELECT, hat InnoDB deutlich die Nase vorne, aber bei den Schreib­zu­grif­fen auf eine Datenbank, den INSERT und UPDATE, ist MyISAM etwas schneller. Die geringere Ge­schwin­dig­keit wird aber von InnoDB durch das Trans­ak­ti­ons­pro­to­koll mehr als aus­ge­gli­chen. MyISAM hat keine au­to­ma­ti­sche Wie­der­her­stel­lung im Feh­ler­fall, ein Back-up muss hier also vor Än­de­run­gen immer bedacht und erstellt werden.

Fazit

Die Speicher-Engine InnoDB ist nicht in jedem Fall der beste Ersatz für ihre Vor­gän­ge­rin MyISAM. Sobald Projekte bzw. der Da­ten­be­stand größer bzw. komplexer werden, ist für MySQL InnoDB die richtige Wahl. Für kleinere Da­ten­ban­ken bzw. An­wen­dun­gen ist MyISAM deutlich per­for­man­ter. Richtig ein­ge­setzt, stellt sich nicht die Entweder-oder-Frage für die beiden Speicher-Engines. Bei Bedarf können beide Module auch in derselben Datenbank ne­ben­ein­an­der verwendet werden.

Zum Hauptmenü