MySQL: InnoDB jetzt mit Volltextsuche und Standard-Storage-Engine

Die Entscheidung war anfangs nicht nachvollziehbar. Mit Version 5.5 der MySQL-Datenbank haben die Entwickler die transaktionsfähige InnoDB als Standard-Storage-Engine festgelegt. MyISAM, bisher der Standard, blieb auf der Strecke. Ein Aufschrei bei vielen Datenbank-Administratoren verstummte heute, als bekannt wurde, welche Neuerungen die Engine InnoDB erfahren wird.

Was sind überhaupt Storage-Engines in MySQL?
Eine Engine ist der Motor oder das Herz der Datenbank. Im Gegensatz zu vielen anderen Datenbanken hat MySQL die Engine vom eigentlichen Server-Prozess entkoppelt. So kann der MySQL-Datenbankbenutzer unter einer Vielzahl von Engines wählen, die alle Vor- und Nachteile bieten. Eine oft gesuchte „Eierlegende-Wollmilch-Sau“ gibt es leider nicht. Oder gab es bisher nicht, um genauer zu sein.

Jede Datenbank, oft auch Schema genannt, ist im Dateisystem durch einen Unterordner festgelegt. In diesem Ordner werden die Daten abgelegt. In jedem Ordner ist mindestens eine .frm-Datei abgelegt, die den Namen Meine-Datenbank.frm trägt. In dieser Tabelle speichert MySQL seine Tabellendefinitionen. In dieser Tabellendefinition ist auch ein Verweis auf die sogenannte Storage-Engine im Feld „Engine“.

Vorteile der MyISAM-Engine
Der grundlegende Vorteil von MyISAM ist die integrierte Volltextindizierung. So ist es möglich, die ersten 500 Zeichen von BLOB- und TEXT-Spalten zu indizieren. Nahezu jede Suche über eine Webseite erfolgt durch die Funktion dieser Engine.

Nachteile der MyISAM-Engine
Das Locking von MyISAM bereitet vielen Adminstratoren starke Kopfschmerzen. Die Engine sperrt beim Schreibzugriff ganze Tabellen, keine Zeilen. Diese „exklusiven Locks“ bremsen je nach Datenbank oft die Performance.

Die Vorteile der InnoDB-Engine liegen hauptsächlich in ihrer Geschwindigkeit. Abfragen über einen Primärschlüssel gehen wesentlich schneller von der Hand, als bei einer MyISAM-Engine. Weitere Vorteile sind ein vorausschauendes Read-Ahead, also ein „Vorwärts-Lesen, welches durch das Vorabladen von Daten einen weiteren Datenbankzugriff immens beschleunigt sowie diverse Hashs und Eingabepuffer, die die Datenbank beschleunigen.

Auf alle diese Vorteile musste der Datenbankdesigner verzichten, wenn er einen Volltextindex nutzen wolle. Es gab Tricks und Kniffe, wie man eine Datenbank in einer InnoDB vorhielt, eine Volltextindexierung dann in eine separate MyISAM-Datenbank auslagerte. Doch diese Möglichkeit war für die meisten Anwendungen überdimensioniert.
Dank des Sphinx-Plugin konnte man relativ einfach über jede MySQL-Engine einen Volltextsuche durchführen. Sphinx agiert als eine Art Proxy, der über spezielle SELECT-Statements via JOIN angesprochen wird.

Aus gutem Grund war MyISAM so die Standard-Engine von MySQL. Die Engine bietet nach wie vor einen sehr guten Kompromiss aus Leistung und Funktionen. Gerade die Möglichkeit der Volltextindexierung war eben bisher nur dieser Engine vorbehalten. Doch mit dem jetzt von Oracle veröffentlichen Preview von MySQL 5.6 ist der letzte Grund, MyISAM den Vorzug zu geben, gewichen: Das Entwicklerteam rüstet die Volltextsuche bei InnoDB nach.
So dürften viele Datenbank-Administratoren die erste stabile Version der von MySQL 5.6 entgegenfiebern. Denn auf einmal gilt es nicht mehr die eigene Datenbank mühsam zu analysieren und Vor- und Nachteile abzuwägen. Dieser Schritt dürfte von da an nur noch wirklich großen Datenbankprojekten vorenthalten sein. Nach Version 5.6 werden die meisten Nutzer von MySQL sich einfach und ohne Nachdenken der Standard-Engine InnoDB bedienen können.

Schreibe einen Kommentar