MyISAM-Tabellen in InnoDB umwandeln

MyISAM-Tabellen in InnoDB umwandeln

Datenbanksysteme sind das Rückgrat vieler Anwendungen und Websites. MySQL ist eines der am häufigsten verwendeten relationalen Datenbankverwaltungssysteme und unterstützt mehrere Speicher-Engines, darunter MyISAM und InnoDB. Während MyISAM historisch oft verwendet wurde, bietet InnoDB zahlreiche Vorteile, die es zur bevorzugten Wahl für viele moderne Anwendungen macht. Dieser Leitfaden erläutert, warum Sie MyISAM-Tabellen in InnoDB umwandeln sollten, wie Sie solche Tabellen identifizieren und wie Sie die Umstellung sowohl über phpMyAdmin als auch über die MySQL Shell durchführen können.

Warum von MyISAM zu InnoDB wechseln?

Probleme mit Tabellen-Locking in MyISAM

MyISAM-Tabellen haben die negative Eigenschaft, dass sie bei den meisten Schreibvorgängen wie CREATE, INSERT, UPDATE und DELETE ganze Tabellen durch einen Write-Lock sperren. Während ein solcher Write-Lock aktiv ist, können von diesen Tabellen auch keine Lesevorgänge durchgeführt werden. Zusätzlich verursacht ein Read-Lock in MyISAM, dass in die Tabelle nicht mehr geschrieben werden kann.

Dieses Verhalten hat zwar technische Gründe, jedoch können die Folgen in einigen Situationen sehr ungünstig sein. Ein häufiges Problem tritt auf, wenn Datenbankoperationen wie Exporte oder Backups durchgeführt werden.

Beispiel: Wenn die Datenbank exportiert wird und der Exportprozess gerade die Session-Tabelle eines Content-Management-Systems (CMS) exportiert, können währenddessen keine neue Sessions in die Tabelle geschrieben werden. Ebenso können bestehende Sessions nicht gelesen werden, bis der Exportvorgang die Tabelle vollständig exportiert hat. Dieses Verhalten kann die Benutzererfahrung erheblich beeinträchtigen und zu Frustration führen.

Vorteile von InnoDB

  • Row-Level-Locking statt Table-Level-Locking: InnoDB verwendet Zeilensperren anstelle von Tabellensperren. Dadurch können mehrere Transaktionen gleichzeitig auf unterschiedliche Zeilen derselben Tabelle zugreifen, ohne sich gegenseitig zu blockieren. Dies erhöht die Parallelität und verbessert die Performance bei gleichzeitigen Zugriffen.
  • Transaktionen und ACID-Konformität: InnoDB unterstützt Transaktionen und gewährleistet die ACID-Eigenschaften (Atomicity, Consistency, Isolation, Durability). Das bedeutet, dass mehrere Datenbankoperationen als eine einzige, atomare Einheit behandelt werden können, was die Datenintegrität sicherstellt.
  • Referentielle Integrität durch Fremdschlüssel: InnoDB ermöglicht die Verwendung von Fremdschlüsseln, wodurch Beziehungen zwischen Tabellen definiert und erzwungen werden können. Dies hilft, Dateninkonsistenzen zu vermeiden und die Integrität der Datenbank zu gewährleisten.
  • Automatische Wiederherstellung nach Abstürzen: InnoDB verfügt über integrierte Mechanismen zur Wiederherstellung nach Systemabstürzen. Durch das Undo-Log und Redo-Log können unvollständige Transaktionen zurückgerollt oder wiederhergestellt werden, was das Risiko von Datenverlust minimiert.
  • Bessere Performance bei hoher Last: Durch effizienteres Locking und die Unterstützung von Transaktionen bietet InnoDB in der Regel bessere Performance im Umgang mit hohem Lese- und Schreibaufkommen.

Die Umstellung von MyISAM auf InnoDB kann die Stabilität, Skalierbarkeit und Performance Ihrer Datenbankanwendung erheblich verbessern. Insbesondere in Anwendungen wie Onlineshops, bei denen gleichzeitige Schreib- und Lesezugriffe häufig vorkommen oder bei denen Datenintegrität und Transaktionen wichtig sind, bietet InnoDB klare Vorteile.

Identifizierung von MyISAM-Tabellen

Bevor Sie mit der Umstellung beginnen, müssen Sie feststellen, welche Tabellen im MyISAM-Format vorliegen. Wir zeigen Ihnen nachfolgend, wie Sie dies mithilfe von phpMyAdmin oder der MySQL Shell anstellen.


Über phpMyAdmin

  • Anmeldung: Melden Sie sich bei phpMyAdmin an und wählen Sie die entsprechende Datenbank aus.
  • Tabellenübersicht: In der Übersicht werden alle Tabellen aufgelistet. In der Spalte "Typ" oder "Engine" sehen Sie, welche Speicher-Engine jede Tabelle verwendet.
  • Filterung: Sie können die Tabellen nach Typ bzw. Engine sortieren, um alle MyISAM-Tabellen zusammen anzuzeigen.

MyISAM-Tabellen über phpMyAdmin identifizieren
Klicken Sie auf das Bild, um es zu vergrößern.

Über die MySQL-Shell

  • MySQL-Konsole öffnen: Verbinden Sie sich mit Ihrer Datenbank über die Shell:
mysql -u benutzername -p datenbankname
  • Abfrage ausführen: Führen Sie die folgende SQL-Abfrage aus, um alle MyISAM-Tabellen aufzulisten:
SELECT TABLE_NAME AS 'Table Name', ENGINE AS 'Table Type' FROM information_schema.tables WHERE TABLE_SCHEMA = 'datenbankname' AND ENGINE = 'MyISAM';

Hinweis: Ersetzen Sie "datenbankname" durch den Namen Ihrer Datenbank.


Umwandlung von MyISAM zu InnoDB

Nachdem Sie die MyISAM-Tabellen identifiziert haben, können Sie mit der Umstellung beginnen.

Wichtiger Hinweis: Erstellen Sie ein vollständiges Backup Ihrer Datenbank, bevor Sie Änderungen vornehmen. So können Sie im Falle von Problemen den ursprünglichen Zustand wiederherstellen.

Wichtiger Hinweis: Im Anschluss an die Umstellung sollte das CMS oder Shopsystem unbedingt auf Funktionalität geprüft werden. Am Besten, indem Sie beispielsweise einige Bestellungen und Bestell-Prozesse simulieren, wie Bestelleingangsbestätigung, Zahlungsaufforderung, Bezahlung, etc.


Umstellung über phpMyAdmin

  • Anmeldung und Datenbankauswahl: Melden Sie sich bei phpMyAdmin an und wählen Sie die entsprechende Datenbank.
  • Tabelle auswählen: Klicken Sie in der Tabellenübersicht auf den Namen der MyISAM-Tabelle, die Sie umwandeln möchten.
  • Aktion wählen: Wählen Sie nun den Reiter "Operationen" in der horizontalen Menüleiste aus.
  • Engine auswählen: Scrollen Sie nach unten zum Dropdown-Menü "Speicher-Engines" und wählen Sie InnoDB als neue Engine aus.
  • Änderung ausführen: Bestätigen Sie die Aktion mit einem Klick auf "OK", um die Umwandlung zu starten. phpMyAdmin führt den erforderlichen ALTER TABLE-Befehl aus.
  • Überprüfung: Nach Abschluss sollten Sie überprüfen, ob die Tabellen nun als InnoDB angezeigt werden.

Umwandlung von MyISAM zu InnoDB über phpMyAdmin
Umwandlung von MyISAM zu InnoDB über phpMyAdmin
Klicken Sie auf das Bild, um es zu vergrößern.

Umstellen über MySQL-Shell

  • MySQL-Konsole öffnen: Verbinden Sie sich mit Ihrer Datenbank:
mysql -u benutzername -p datenbankname
  • SQL-Befehl für eine einzelne Tabelle: Um eine einzelne Tabelle umzuwandeln, verwenden Sie:
ALTER TABLE tabellenname ENGINE=InnoDB;

Hinweis: Ersetzen Sie "tabellenname" durch den Namen der Tabelle. Wiederholen Sie den Schritt mit allen umzuwandelnden Tabellen.


  • SQL-Befehl für alle MyISAM-Tabellen: Um alle MyISAM-Tabellen umzuwandeln, können Sie die folgenden Schritte ausführen:
SELECT CONCAT('ALTER TABLE `', TABLE_NAME, '` ENGINE=InnoDB;')
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'datenbankname' AND ENGINE = 'MyISAM';
  • Ausführung der Befehle: Kopieren Sie die generierten Befehle und führen Sie sie in der MySQL-Konsole aus.

  • Überprüfung: Führen Sie die Abfrage zur Identifizierung von MyISAM-Tabellen erneut aus, um sicherzustellen, dass alle Tabellen umgestellt wurden.

Mögliche Probleme und Lösungen

Fremdschlüssel-Einschränkungen

  • Problem: InnoDB unterstützt Fremdschlüssel, während MyISAM dies nicht tut. Beim Umwandeln können daher Fehler auftreten, wenn die Tabellenstrukturen nicht kompatibel sind.
  • Lösung: Stellen Sie sicher, dass die Datentypen der verknüpften Spalten übereinstimmen und dass die referenzierten Tabellen bereits in InnoDB konvertiert wurden.

Platzbedarf und Performance

  • Problem: InnoDB kann mehr Speicherplatz benötigen und die Performance kann sich je nach Workload ändern.
  • Lösung: Überwachen Sie die Systemressourcen nach der Umstellung und optimieren Sie die Datenbankkonfiguration entsprechend.

Backup-Strategie überprüfen

  • Anpassung der Backups: Wir erstellen automatisch einmal pro Nacht ein Backup Ihrer Websites und Datenbanken. Dabei werden von uns Backups der letzten zehn Tage vorgehalten - ältere Backups werden gelöscht. Die Backups werden auf eigens von uns zu diesem Zweck bereitgestellten Backup-Servern gespeichert und gehen so nicht zu Lasten Ihres Festplattenplatzes. Sollten Sie darüber hinaus eigene Backups erstellen wollen, stellen Sie sicher, dass Ihre Backup-Methoden mit InnoDB kompatibel sind. Nutzen Sie Tools wie mysqldump mit geeigneten Optionen oder erwägen Sie den Einsatz von Snapshot-Technologien.

Performance-Monitoring

  • Überwachung: Beobachten Sie die Performance Ihrer Anwendung nach der Umstellung und führen Sie gegebenenfalls Optimierungen durch.
  • Index-Optimierung: Überprüfen Sie, ob zusätzliche Indizes erforderlich sind oder ob bestehende Indizes optimiert werden können.

Die Umwandlung von MyISAM-Tabellen in InnoDB ist ein wichtiger Schritt zur Verbesserung der Zuverlässigkeit, Skalierbarkeit und Performance Ihrer Datenbankanwendungen. Durch die Vermeidung von Tabellenlocks und die Unterstützung von Transaktionen und Fremdschlüsseln bietet InooDB erhebliche Vorteile gegenüber MyISAM. Dieser Leitfaden hat gezeigt, wie Sie MyISAM-Tabellen identifizieren und die Umstellung sowohl über phpMyAdmin als auch über die Shell durchführen können. Denken Sie daran, vor der Umstellung stets ein Backup zu erstellen und nach der Umstellung die Datenbank und die Anwendung sorgfältig zu überwachen.

Geschafft! Sie haben MyISAM-Tabellen identifiziert und in InnoDB-Tabellen umgewandelt!

Finden Sie den passenden Tarif

Unser Tarifberater hilft Ihnen dabei, das passende Paket zu finden. Bei Fragen berät Sie unser Sales-Team sehr gerne unter +49 (0) 4131 / 22 78 1-25 oder sales@timmehosting.de.

Bitte beachten Sie: Der Tarifberater dient nur der groben Orientierung. Ihr tatsächlicher Bedarf kann durch den Ressourcenbedarf Ihrer Anwendung(en), tageszeitabhängige/saisonale/aktionsbedingte Schwankungen des Besucheraufkommens, geplantes Wachstum und weitere Faktoren von der Empfehlung abweichen.

  • 1
  • 2
  • 3
  • 4
  • 5

Was möchten Sie hosten?

Möchten Sie einen oder mehrere Shops hosten? (Eine Multishop-Installation gilt als ein Shop.)

Möchten Sie eine oder mehrere Websites hosten? (Eine Multisite-Installation gilt als eine Website.)

Wieviele Besucher haben Sie insgesamt pro Tag?

Wieviele Besucher haben Sie insgesamt pro Tag?

Wieviele Besucher haben Sie insgesamt pro Tag?

Wieviele Artikel haben Sie insgesamt in Ihrem Shop/Ihren Shops (inkl. Varianten)?

Wieviele Artikel haben Sie insgesamt in Ihrem Shop/Ihren Shops (inkl. Varianten)?

Wieviel Speicherplatz benötigen Sie insgesamt?

Wieviel Speicherplatz benötigen Sie insgesamt?

Wieviel Speicherplatz benötigen Sie insgesamt?

Wir empfehlen Ihnen folgende Lösungen:

ScaleServer oder Web Hosting

Zu den ScaleServer Paketen Zu den Web Hosting Paketen

Wir empfehlen Ihnen folgende Lösungen:

ScaleServer oder Shop Hosting

Zu den ScaleServer Paketen Zu den Shop Hosting Paketen

Wir empfehlen Ihnen folgende Lösungen:

Managed vServer oder ScaleServer

Zu den Managed vServer Paketen Zu den ScaleServer Paketen

Wir empfehlen Ihnen folgende Lösungen:

Managed Server oder ScaleServer

Zu den Managed Server Paketen Zu den ScaleServer Paketen

Wir empfehlen Ihnen unsere

Timme Cloud 2.0

Zur Timme Cloud 2.0