OptimierungWordpress

Von MyISAM auf InnoDB in ein paar einfachen Schritten

Einleitung

Dieser Artikel befasst sich mit der Umstellung des verwendeten Speichermoduls („Storage Engine“) einer MySQL-Datenbank. Viele MySQL-Installationen verwenden zur Speicherung der Daten das bereits seit langem verfügbare „MyISAM“. In den letzten Jahren hat sich aber das neuere Modul „InnoDB“ als ebenso zuverlässig und erheblich leistungsfähiger herausgestellt.

Deswegen erklärt Ihnen dieser Artikel Schritt für Schritt, wie Sie diese Umstellung direkt auf Ihrem MySQL-Server ausführen können. Sie sollten allerdings vorab wissen, wie Sie auf die Verwaltungs-Oberfläche Ihres MySQL-Servers („PHPMyAdmin“) zugreifen können.

Die Unterschiede zwischen „InnoDB“ und „MyISAM“

Grundsätzlich ist es so, dass in „MyISAM“ Schreibzugriffe auf eine Datenbank (INSERT und UPDATE) etwas schneller ausgeführt werden als bei „InnoDB“, dass dafür eine deutlich höhere Geschwindigkeit bei Datenbankabfragen (SELECT) aufweist.

Außerdem verwendet „InnoDB“ ein Transaktionsprotokoll, dass im Fehlerfall eine automatische Wiederherstellung unterstützt, was bei „MyISAM“ nicht der Fall ist.

Beide Speichermodule können übrigens in ein und derselben Datenbank nebeneinander verwendet werden, es könnten also durchaus einige Tabellen „MyISAM“ nutzen, während andere Tabellen „InnoDB“ verwenden.

Welches Speichermodul Sie nutzen sollten

Für die allermeisten Websites auf Basis von Wordpress macht die Nutzung von „InnoDB“ durchaus Sinn. Denn die allermeisten Vorgänge auf einer Wordpress-Website beruhen auf dem Auslesen von Datenbank-Inhalten. Und damit haben Sie eventuell eine minimale verschlechterte Reaktionszeit des Systems, wenn Sie neue Artikel anlegen oder bestehende aktualisieren. Dafür wird aber der weitaus wichtigere Teil, nämlich die Auslieferung der Webseiten an den Benutzer, merkbar schneller.

Eine Einschränkung gibt es aber doch. Wenn Sie eine Website verwalten, auf die viele Schreibzugriffe stattfinden (zum Beispiel Webshops mit sehr vielen Bestellvorgängen oder große Buchungssysteme), dann könnte es für Sie von Vorteil sein, zumindest bei den Tabellen, auf die ständig schreibend zugegriffen wird, weiterhin „MyISAM“ als Speichermodul zu verwenden.

Dieser Artikel erklärt daher zunächst die Umstellung aller Tabellen Ihrer Datenbank auf „InnoDB“, auf die manuelle Änderung einzelner Tabellen gehe ich am Ende des Artikels noch einmal gesondert ein.

WICHTIG – Sie sollten sich darüber im Klaren ein, dass fehlerhafte Änderungen an den Datenbanen einer Wordpress-Website durchaus die ganze Website unbrauchbar machen können. Sie sollten daher vor jeder solchen Änderung ein Backup Ihrer Datenbank anlegen.

Das Aufrufen von „PHPMyAdmin“

Nach dem Aufruf von „PHPMyAdmin“ (so heißt die meistgenutzte Verwaltungs-Oberfläche des Datenbak-Servers MySQL) sehen Sie zunächst einmal einen Bildschirm, der ungefähr so aussehen sollte.

Im linken Teil des Fensters sehen Sie die existierenden Datenbanken. Die Datenbank „information_schema“ gibt es immer, sie enthält Informationen über den Datenbankserver selbst und ist zum Betrieb unbedingt erforderlich. In einer Standard-Installation von Wordpress sollte neben dieser Datenbank genau eine weitere existieren. Diese Datenbank (in diesem Beispiel heißt sie „clausneh_wordpress“) ist Ihre Wordpress-Datenbank.

Und genau diese Datenbank sollten Sie jetzt erst einmal kopieren, damit Sie im Zweifelsfall ein Backup Ihrer Datenbank verfügbar haben.

Das Kopieren Ihrer Datenbank

Dazu klicken Sie im linken Teil des Fensters einmal auf den Namen der Datenbank. Sie sehen jetzt ein Fenster wie das hier gezeigte.

Klicken Sie in diesem Bildschirm auf den Button „Operationen“ und scrollen Sie nach unten, bis Sie den Punkt „Datenbank kopieren nach“ erreicht haben.

Ihr Bildschirm sollte jetzt ungefähr so aussehen.

Tragen Sie in das erste Feld unter dem Titel „Datenbank kopieren nach“ den gewünschten Namen der neuen Datenbank ein (hier im Beispiel habe ich „clausneh_wordpress_myisam“ gewählt, sie können aber jeden beliebigen Namen verwenden) und stellen Sie sicher, dass die Einstellungen mit denen im obigen Bild übereinstimmen.

Klicken Sie anschließend auf den Button „OK“. Nach einigen Minuten Wartezeit wird die neu erstellte Datenbank mit dem von Ihnen vergebenen Namen in der Liste auf der linken Seite erscheinen.

Damit wären die Vorbereitungen abgeschlossen und wir können mit der eigentlichen Umstellung beginnen.

Die Umstellung aller Tabellen der Datenbank

Schritt 1

Dazu klicken Sie im linken Teil des Fensters einmal auf den Namen der Datenbank. Sie sehen jetzt ein Fenster wie das hier gezeigte.

In der angezeigten Liste sehen Sie die Namen aller Tabellen in Ihrer Wordpress-Datenbank. In der Spalte „Typ“ finden Sie den Namen des von dieser Tabelle verwendeten Speichermoduls. Voraussichtlich werden Sie hier überall den Typ „MyISAM“ sehen.

Falls in der Spalte Typ bereits überall das Wort „InnoDB“ steht, können Sie den Vorgang hier abbrechen. In diesem Fall befindet sich Ihre Datenbank bereits im korrekten Modus.

Schritt 2

Ansonsten klicken Sie bitte auf den Home-Button (das ist das kleine Häuschen auf der linken Seite unterhalb des Seitentitels „PHPMyAdmin“).

Sie sollten dann ein Fenster ähnlich dem hier gezeigten sehen.

Schritt 3

Klicken Sie in diesem Fenster auf den Button „SQL“. Das Fenster sollte jetzt ungefähr so aussehen.

Überprüfen Sie, ob in dem Kommentar oberhalb des Befehlsfensters korrekt „SQL-Befehl(e) auf Server „localhost“ ausführen:“ angezeigt wird.

Schritt 4

Wenn das der Fall ist, geben Sie bitte folgende Zeilen in das Befehlsfenster ein. Beachten Sie bitte, dass Sie den Namen der Datenbank in der ersten Zeile (hier im Beispiel „clausneh_wordpress“) zu dem Namen Ihrer Wordpress-Datenbank ändern müssen.

SET @DATABASE_NAME = ‚clausneh_wordpress‘;

SELECT CONCAT(‚ALTER TABLE `‘, table_name, ‚` ENGINE=InnoDB;‘)
AS sql_statements FROM information_schema.tables AS tb
WHERE table_schema = @DATABASE_NAME
AND `ENGINE` = ‚MyISAM‘
AND `TABLE_TYPE` = ‚BASE TABLE‘
ORDER BY table_name DESC;

Sie erhalten jetzt eine Ergebnisliste, die ungefähr so aussehen sollte.

Schritt 5

Diese Ergebnisliste enthält die SQL-Befehle, die Sie im nächsten Schritt für die eigentliche Umstrukturierung benötigen werden. Kopieren Sie die Ergebnisse in die Zwischenablage.

Sie sollten jetzt eine Liste von SQL-Befehlen haben, die ungefähr so aussieht :

ALTER TABLE `wp_yoast_seo_meta` ENGINE=InnoDB;
ALTER TABLE `wp_yoast_seo_links` ENGINE=InnoDB;
ALTER TABLE `wp_wprss_logs` ENGINE=InnoDB;
ALTER TABLE `wp_vfbp_forms` ENGINE=InnoDB;
ALTER TABLE `wp_vfbp_formmeta` ENGINE=InnoDB;
ALTER TABLE `wp_vfbp_fields` ENGINE=InnoDB;
ALTER TABLE `wp_users` ENGINE=InnoDB;
ALTER TABLE `wp_usermeta` ENGINE=InnoDB;
ALTER TABLE `wp_term_taxonomy` ENGINE=InnoDB;
ALTER TABLE `wp_term_relationships` ENGINE=InnoDB;
ALTER TABLE `wp_terms` ENGINE=InnoDB;
ALTER TABLE `wp_termmeta` ENGINE=InnoDB;
ALTER TABLE `wp_posts` ENGINE=InnoDB;
ALTER TABLE `wp_postmeta` ENGINE=InnoDB;
ALTER TABLE `wp_options` ENGINE=InnoDB;
ALTER TABLE `wp_litespeed_optimizer` ENGINE=InnoDB;
ALTER TABLE `wp_litespeed_img_optm` ENGINE=InnoDB;
ALTER TABLE `wp_links` ENGINE=InnoDB;
ALTER TABLE `wp_icl_translation_status` ENGINE=InnoDB;
ALTER TABLE `wp_icl_translation_batches` ENGINE=InnoDB;
ALTER TABLE `wp_icl_translations` ENGINE=InnoDB;
ALTER TABLE `wp_icl_translate_job` ENGINE=InnoDB;
ALTER TABLE `wp_icl_translate` ENGINE=InnoDB;
ALTER TABLE `wp_icl_string_urls` ENGINE=InnoDB;
ALTER TABLE `wp_icl_string_translations` ENGINE=InnoDB;
ALTER TABLE `wp_icl_string_status` ENGINE=InnoDB;
ALTER TABLE `wp_icl_string_positions` ENGINE=InnoDB;
ALTER TABLE `wp_icl_string_pages` ENGINE=InnoDB;
ALTER TABLE `wp_icl_string_packages` ENGINE=InnoDB;
ALTER TABLE `wp_icl_strings` ENGINE=InnoDB;
ALTER TABLE `wp_icl_reminders` ENGINE=InnoDB;
ALTER TABLE `wp_icl_node` ENGINE=InnoDB;
ALTER TABLE `wp_icl_mo_files_domains` ENGINE=InnoDB;
ALTER TABLE `wp_icl_message_status` ENGINE=InnoDB;
ALTER TABLE `wp_icl_locale_map` ENGINE=InnoDB;
ALTER TABLE `wp_icl_languages_translations` ENGINE=InnoDB;
ALTER TABLE `wp_icl_languages` ENGINE=InnoDB;
ALTER TABLE `wp_icl_flags` ENGINE=InnoDB;
ALTER TABLE `wp_icl_core_status` ENGINE=InnoDB;
ALTER TABLE `wp_icl_content_status` ENGINE=InnoDB;
ALTER TABLE `wp_ewwwio_queue` ENGINE=InnoDB;
ALTER TABLE `wp_ewwwio_images` ENGINE=InnoDB;
ALTER TABLE `wp_duplicator_pro_packages` ENGINE=InnoDB;
ALTER TABLE `wp_duplicator_pro_entities` ENGINE=InnoDB;
ALTER TABLE `wp_comments` ENGINE=InnoDB;
ALTER TABLE `wp_commentmeta` ENGINE=InnoDB;

Schritt 6

Klicken Sie jetzt im linken Teil des Fensters wieder auf den Namen Ihrer Wordpress-Datenbank. Sie sehen jetzt ein Fenster wie das hier gezeigte.

Schritt 7

Klicken Sie jetzt auf den Button „SQL“. Im Kommentarfeld oberhalb des Befehlsfensters sollte jetzt „SQL-Befehl(e) auf Server „ihre_datenbank“ ausführen:“ angezeigt werden.

Schritt 8

Ist dies der Fall, dann kopieren Sie die im vorigen Schritt erstellte Liste von SQL-Befehlen in das Befehlsfenster und führen die Liste der Befehle durch einen Klick auf „OK“ aus.

Nach einem kurzen Moment erhalten Sie die Resultate, die ungefähr so aussehen sollten.

Schritt 9

Jetzt sollten Sie noch durch einen Klick auf den Namen Ihrer Wordpress-Datenbank das Resultat überprüfen. Wenn alles korrekt funktioniert hat, sollte in jeder Zeile der Tabelle in der Spalte „Typ“ jetzt „InnoDB“ stehen.

Die Umstellung einer einzelnen Tabelle

Wenn Sie das Speichermodul nur für eine einzelne Tabelle ändern möchten, gehen Sie bitte wie folgt vor.

Schritt 1

Öffnen Sie Ihre Wordpress-Datenbank durch einen Klick auf den Namen in der Liste auf der linken Seite.

Schritt 2

Klicken Sie auf den Namen der Tabelle, für die Sie das Speichermodul ändern möchten.

Schritt 3

Klicken Sie auf den Button „Operationen“.

Schritt 4

In diesem Bildschirm können Sie unter dem Punkt „Tabellenformat“ das gewünschte Speichermodul auswählen und durch einen Klick auf „OK“ speichern.

Claus Nehring

Der Autor ist freiberuflichler Web-Entwickler mit Sitz in Luxemburg. Er entwickelt seit mehr als 25 Jahren Websites für seine Kunden und hat sich in den letzten 12 Jahen auf Websites auf Basis von Wordpress spezialisiert. Er publiziert ständig Artikel zu Themen rund ums Internet in verschiedenen Foren.

Related Articles

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.


Durch das Abschicken des Kommentars werden die eingegebenen Daten in der Datenbank dieser Website gespeichert. Ausserdem speichern wir aus Sicherheitsgründen Ihre IP-Adresse für einen Zeitraum von 60 Tagen. Weitere Informationen zur Datenverarbeitung finden Sie in der Datenschutz-Erklärung.

Back to top button
Close