Vergleich der wichtigsten Storage Engines Memory, InnoDB und MyISAM

Die Wahl der Storage Engine hat einen beachtlichen Einfluss auf die Performance der Datenbank bzw. Applikation. Es lohnt es sich defenitiv die wichtigsten Typen Memory, InnoDB und MyISAM etwas genauer anzusehen.

Aktuell laufen noch immer ein grosser Anteil der Datenbanken unter MyISAM, was folgende Gründe haben kann:

  • MyISAM ist die default storage engine bei einer mySQL Installation unter Linux/Unix
  • MyISAM ist die älteste storage engine unter mySQL

Die Punkte zeigen auf – das die Storage Engine oftmals nicht bewusst bestimmt wurde. Da die storage engine pro Tabelle zugewiesen wird, kann die bestmöglichste Lösung also auch eine Kombination aus den verschiedenen Typen sein.

Ein paar Fakten zu den 3 Typen:

MyISAM

  • Pro: Schnelle Lesezugriffe
  • Pro: Fulltext Indexierung möglich
  • Pro: Sehr einfach zu betreiben und konfigurieren
  • Kontra: Kein Rowlevel Lock. MyISAM „lockt“ immer die gesammte Tabelle!
  • Kontra: Keine Fremdschlüssel, und somit streng gesehen auch kein „echtes“, relationales Datenbanksystem.

InnoDB

  • Pro: Schnelle Updates.
  • Pro: Fremdschlüssel möglich.
  • Pro: Rowlevel Lock
  • Pro: Ausführlichere Parametrisierung über die my.cnf möglich
  • Pro: Transaktionen -> Datensicherheit!
  • Kontra: Keine Fulltext Indexierung

Memory
Diese „storage engine“ wird ihrem Namen gerecht, und legt die Daten lediglich im Arbeitsspeicher ab. Dadurch sind superschnelle Zugriffe möglich – allerdings verliert man diese Informationen z.B. durch einen Neustart der Datenbank. Daher nur geeignet für Caching von Applikationsdaten (z.B. Sessions).

Fazit:
Der Wahl von myISAM kann bei Applikationen mit einem hohen Schreib/Update Ratio ein echter Performancekiller werden, da bei jedem solchen Zugriff immer die komplette Tabelle gelockt wird – und somit andere Threads warten müssen. Hier wird auch ein Upgrade der Hardware nicht den gewünschten, langfristigen Erfolg bringen.

Dagagen sollte beim Einsatz von InnoDB genügend Zeit für die Konfiguration vom Server eingerechnet werden, damit man am Ende das erwartete, performante und sichere relationale Datenbanksystem hat.

Für Logging-Datenbanken kann ausserdem die storage engine „Blackhole“ sehr interressant sein. Hier werden die Daten lediglich in das BinaryLog geschrieben. Dadurch kann ein gigantischer Schreibdurchsatz erreicht werden, bedingt aber ein Master/Slave Setup.

Schlagworte: , , , , ,

Kommentieren


Social Widgets powered by AB-WebLog.com.