WordPress speichert alle Inhalte, Einstellungen und zahlreiche Plugin-Daten in einer MySQL- oder MariaDB-Datenbank und führt bei jedem Laden einer Seite Abfragen darin durch. Im Laufe der Jahre sammeln sich in der Datenbank viele überflüssige Daten an: alte Beitragsversionen, Spam-Kommentare, abgelaufene temporäre Daten sowie Einstellungen gelöschter Plugins. Eine vernachlässigte Datenbank verlangsamt die Website, insbesondere den Admin-Bereich und die dynamischen Seiten von Online-Shops, und führt dazu, dass Backups größer und langsamer werden.
In dieser Anleitung zeigen wir Ihnen, warum eine Datenbank an Größe zunimmt, wie Sie das Problem erkennen, wie Sie sie mithilfe von Plugins, phpMyAdmin und WP-CLI sicher bereinigen und optimieren können und wie Sie verhindern, dass sie erneut vernachlässigt wird.
Wodurch wird die Datenbank immer größer?
- Beitragsversionen (Revisionen): WordPress speichert bei jeder Speicherung eine frühere Version des Beitrags. Eine häufig bearbeitete Seite kann mehrere Dutzend Revisionen aufweisen.
- Automatische Entwürfe und Papierkorb: Beiträge und Seiten, die gelöscht wurden, sich aber noch im Papierkorb befinden.
- Kommentare: Spam, in den Papierkorb verschobene und zur Freigabe anstehende Kommentare.
- Transiente Daten: Daten, die von Plugins vorübergehend gespeichert werden; ein Teil der abgelaufenen Daten wird nicht automatisch gelöscht.
- Verwaiste Daten: Metadaten, die zu gelöschten Einträgen, Benutzern oder Begriffen gehören.
- Reste gelöschter Plugins: Einstellungen in der Tabelle „
wp_options“, eigene Tabellen. - Protokolle und Statistiken: Bestimmte Sicherheits-, Statistik- und Weiterleitungs-Plugins erzeugen umfangreiche Protokolltabellen.
- Online-Shop: WooCommerce-Sitzungen, Protokolle der Hintergrundaufgaben (Action Scheduler) und alte Bestelldaten.
Die Funktion „autoload“ und die Tabelle „wp_options“
Die Tabelle „wp_options“ ist besonders wichtig. Ein Teil der hier gespeicherten Einstellungen wird bei jedem Seitenaufruf automatisch geladen (Autoload), auch wenn sie auf der jeweiligen Seite gar nicht benötigt werden. Wenn diese Datenmenge zunimmt (beispielsweise aufgrund umfangreicher Einstellungen eines versehentlich zurückgelassenen, gelöschten Plugins), werden alle Seiten langsamer. WordPress warnt Sie auf der Seite „Tools › Website-Status“, wenn die Größe der automatisch geladenen Daten zu groß ist. Wie Sie dies messen und sicher reduzieren können, wird im Knowledge-Base-Artikel zur Überprüfung der wp_options- und Autoload-Daten erläutert; die aufgeblähte wp_postmeta-Tabelle wird in einem separaten Artikel behandelt.
Anzeichen für eine langsame Datenbank
- Das Admin-Panel ist langsam, insbesondere die Listen mit Beiträgen und Bestellungen,
- Die Seite „Status der Website“ weist auf die automatisch geladenen Einstellungen hin,
- Die Backups werden immer größer und langsamer,
- Die Ressourcenstatistiken des Webhostings weisen eine hohe CPU- oder E/A-Auslastung auf,
- Das Plugin „Query Monitor“ zeigt langsame oder sehr viele Abfragen an.
Vorher: Sicherung
Das Bereinigen der Datenbank ist ein irreversibler Vorgang. Erstellen Sie daher stets zuvor eine Sicherungskopie. In cPanel können Sie dies über phpMyAdmin durch Exportieren der Datenbank oder über den Menüpunkt „Backup“ durch Herunterladen der Datenbank tun; bei den cPanel-Hosting-Paketen von aWh können Sie darüber hinaus auch eine Wiederherstellung aus der täglichen JetBackup-Sicherung vornehmen. Die Schritte zur Sicherung und Wiederherstellung werden im Artikel über die Wiederherstellung von Dateien und Datenbanken aus Sicherungskopien beschrieben.
Reinigung mit einem Plugin
Der einfachste Weg ist ein entsprechendes Plugin:
- WP-Optimize: Löschen von Überarbeitungen, Entwürfen, Spam und abgelaufenen Transienten sowie Optimierung der Tabellen – nach einem festgelegten Zeitplan.
- Advanced Database Cleaner: eignet sich auch zum Aufspüren von Tabellen und Einstellungen, die durch verwaiste Daten und gelöschte Plugins zurückgelassen wurden.
Empfohlene Schritte:
- Führen Sie das Löschen von Überarbeitungen, automatischen Entwürfen, dem Papierkorb, Spam und abgelaufenen Transienten durch.
- Überprüfen Sie die verwaisten Einstellungen und Tabellen, löschen Sie jedoch nur diejenigen, von denen Sie sicher wissen, dass sie zu einem nicht mehr verwendeten Plugin gehören.
- Optimieren Sie die Tabellen.
- Bitte überprüfen Sie die Website und den Admin-Bereich.
Nach der Bereinigung können Sie das Plugin deaktivieren oder so einstellen, dass es monatlich planmäßig ausgeführt wird.
Für Fortgeschrittene: phpMyAdmin und WP-CLI
phpMyAdmin (in cPanel unter der Rubrik „Datenbanken“):
- Wenn Sie die Datenbank öffnen, erkennen Sie anhand der Größe der Tabellen und der Anzahl ihrer Zeilen, wo sich die meisten Daten befinden.
- Nachdem Sie die Tabellen ausgewählt haben, können Sie diese mit dem Befehl „Optimize table“ neu organisieren. Bei InnoDB-Tabellen bedeutet dies einen vollständigen Neuaufbau der Tabelle, was bei großen Tabellen einige Zeit in Anspruch nimmt und währenddessen die Tabelle gesperrt sein kann; führen Sie den Vorgang daher in Zeiten mit geringem Datenverkehr durch.
- Sie können Daten (beispielsweise Revisionen) auch direkt über SQL-Abfragen löschen, dies ist jedoch nur dann empfehlenswert, wenn Sie die Tabellenstruktur von WordPress genau verstehen. Das Tabellenpräfix lautet nicht immer „
wp_“.
Über die Grundlagen von phpMyAdmin berichten wir in einem separaten Artikel.
WP-CLI (sofern das Paket auch SSH enthält):
wp db size --tables # Größe der Tabellen
wp transient delete --expired # abgelaufene Transients löschen
wp post delete $(wp post list --post_type=revision --format=ids) --force # Revisionen löschen
wp db optimize # Tabellen optimieren
Erstellen Sie zuvor mit dem Befehl „wp db export mentes.sql“ eine Sicherungskopie. Auf den cPanel-Hosting-Konten von aWh lassen sich die Befehle „wp db export“ und „wp db optimize“ nicht ausführen, da die PHP-Funktion „proc_open“ aus Sicherheitsgründen deaktiviert ist; führen Sie dort die Sicherung mit dem Befehl „mysqldump“ und die Optimierung in phpMyAdmin durch. Die einzelnen Schritte werden im Knowledge-Base-Artikel zur Verwendung von WP-CLI beschrieben.
Vorbeugung
Begrenzung der Revisionen. In der Datei „wp-config.php“ können Sie die Anzahl der Revisionen begrenzen (vor der Zeile „That’s all, stop editing!“):
define( 'WP_POST_REVISIONS', 10 );
Leeren des Papierkorbs. Standardmäßig leert WordPress den Papierkorb nach 30 Tagen; Sie können diesen Zeitraum auch verkürzen (define( 'EMPTY_TRASH_DAYS', 7 );).
Plugin-Hygiene. Behalten Sie nur die notwendigen Plugins bei, und wenn Sie ein Plugin löschen, prüfen Sie, ob die Option „Daten beim Entfernen löschen“ aktiviert ist. Weitere Informationen zur Verwaltung von Plugins finden Sie in unserem Leitfaden zu Plugins.
Begrenzung der Protokolle. Stellen Sie bei den Plugins für Sicherheit, Statistik und Weiterleitung ein, dass alte Protokolleinträge nach einer bestimmten Zeit gelöscht werden.
Für Ihren Online-Shop: Aktivieren Sie die Hochleistungs-Bestellspeicherung (HPOS) von WooCommerce, die Bestellungen in eigenen, optimierten Tabellen speichert, und stellen Sie den Action Scheduler so ein, dass alte, abgeschlossene Aufgaben gelöscht werden.
Geplante Wartungsarbeiten. Führen Sie die Bereinigung einmal im Monat durch (entweder über ein Plugin oder als Cron-Job); die Einrichtung des Cron-Jobs in cPanel wird in einer separaten Anleitung erläutert.
Objekt-Cache. Auf einer stark frequentierten Website oder in einem Online-Shop speichert ein persistenter Objekt-Cache (z. B. Redis) die Ergebnisse häufig aufgerufener Abfragen im Arbeitsspeicher, was die Belastung der Datenbank erheblich verringert. Hierfür ist in der Regel ein VPS erforderlich.
Die Rolle des Webhostings
Die Geschwindigkeit der Datenbank hängt auch vom Speichermedium ab: Eine WordPress-Seite führt unzählige kleine Lese- und Schreibvorgänge durch, bei denen NVMe-SSDs um ein Vielfaches schneller sind als herkömmliche SSDs und Festplatten. Das WordPress-Hosting und das cPanel-Hosting von aWh laufen auf NVMe-SSDs und bieten eine unbegrenzte Anzahl von Datenbanken. Sollte Ihre Website auch nach einer Bereinigung regelmäßig an die Ressourcengrenzen Ihres Hosting-Pakets stoßen, könnte ein größeres Hosting-Paket oder ein KVM-VPS der nächste Schritt sein.
Zusammenfassung
Die Wartung der Datenbank ist einfach, wenn Sie sie regelmäßig durchführen: Backups, Überprüfungen, das Leeren des Papierkorbs, das Löschen von Spam und abgelaufenen temporären Daten sowie das vorsichtige Entfernen verwaisten Plugin-Daten und die Optimierung der Tabellen. Durch die Begrenzung der Revisionen, die Pflege der Plugins und die monatlich geplante Bereinigung können Sie verhindern, dass die Datenbank erneut an Größe zunimmt.
Häufig gestellte Fragen
Ist die Optimierung der Datenbank sicher?
Ja, sofern Sie zuvor ein Backup erstellen und nur das löschen, von dem Sie wissen, was es ist. Das Löschen von Revisionen, Spam und abgelaufenen Transienten ist unbedenklich; seien Sie jedoch vorsichtig beim Löschen von verwaisten Tabellen und Einstellungen.
Wie oft muss gereinigt werden?
Bei einer durchschnittlichen Website reicht es aus, dies monatlich oder vierteljährlich durchzuführen; bei Online-Shops und häufig aktualisierten Websites empfiehlt es sich jedoch, dies häufiger zu tun.
Kann ich Einträge aus der Tabelle „wp_options“ manuell löschen?
Nur wenn Sie genau wissen, welcher Beitrag zu welchem (nicht mehr verwendeten) Plugin gehört. Das Löschen der Einstellungen von WordPress und der aktiven Plugins führt zu Fehlern. Erstellen Sie zuvor stets eine Sicherungskopie.
Kann die Optimierung zu Ausfällen führen?
Bei der Optimierung großer Tabellen kann die Tabelle für kurze Zeit gesperrt sein, was zu Verzögerungen führen kann. Führen Sie den Vorgang daher in Zeiten mit geringem Datenverkehr durch.
Was ist der Unterschied zwischen Bereinigung und Optimierung?
Die Bereinigung löscht überflüssige Daten, die Optimierung ordnet die interne Struktur der Tabellen neu und gibt den nach dem Löschen verbleibenden freien Speicherplatz wieder frei.
Verlangsamen die vielen Überarbeitungen den Betrieb?
In kleinen Mengen sind sie zwar kaum ins Gewicht fallend, doch bei einer häufig bearbeiteten Website können die Revisions einen erheblichen Teil der Datenbank ausmachen und die Admin-Oberfläche sowie die Sicherungsvorgänge verlangsamen. Begrenzen Sie deren Anzahl in der Datei „wp-config.php“.
Benötigen Sie ein separates Plugin, wenn Sie cPanel nutzen?
Nicht unbedingt: Mit phpMyAdmin und WP-CLI können Sie dies auch ohne Plugin durchführen. Das Plugin ist jedoch bequemer, insbesondere wenn Sie eine zeitgesteuerte Bereinigung wünschen.