Datenbank-Hausputz einer WordPress-Instanz mit dem Plugin Advanced DB Cleaner
Seit vermutlich WordPress 6.6 habe ich bei einigen WordPress-Instanzen unter Website-Zustand eine Meldung als kritisches Problem. Die Meldung betrifft die Optionstabelle (in der Regel wp_options) in der Datenbank, die zu viele automatisch geladene Optionen enthält. Das Problem taucht insbesondere bei älteren WordPress-Instanzen auf. Warum das so ist und wie man das beheben kann, beschreibe ich in diesem Beitrag.
Vor einiger Zeit habe ich bereits einen Beitrag zum Hausputz bei WordPress-Instanzen geschrieben. Dieser Beitrag kann als eine Ergänzung betrachtet werden.
Website-Zustand meldet kritisches Problem
Wenn du auf deiner WordPress-Instanz unter Werkzeuge > Website-Zustand gehst, könnte es sein, dass eine Meldung in ähnlicher Form aufploppt:
1 kritisches Problem
Kritische Probleme betreffen Elemente, die eine große Auswirkung auf die Leistung oder Sicherheit deiner Website haben können. Die Lösung dieser Probleme sollte priorisiert werden.
Automatisch geladene Optionen können die Leistung beeinflussen
Leistung
Automatisch geladene Optionen sind Konfigurationseinstellungen für Plugins und Themes, welche bei jedem Seitenaufruf in WordPress automatisch geladen werden. Sind zu viele automatisch geladene Optionen vorhanden, können sie deine Website verlangsamen. Deine Website hat 2503 automatisch geladene Optionen (Größe: 2 MB) in der Optionstabelle, was dazu führen kann, dass deine Website langsam ist. Du kannst die Optionen, die von deiner Datenbank automatisch geladen werden, überprüfen und alle Optionen entfernen, die von deiner Website nicht mehr benötigt werden.
Anschließend erscheint der folgende Link: Weitere Informationen über die Optimierung von automatisch geladenen Optionen
Das Problem betrifft hauptsächlich WordPress-Instanzen, die schon lange existieren. Auf diesen WordPress-Instanzen hat man z. B. schon das eine oder andere Plugin getestet oder vielleicht einen Relaunch auf ein anderes Theme durchgeführt. Bei der WordPress-Instanz mit der o. g. Meldung war das der Fall. Leider ist es so, dass in solchen Fällen die Einträge in der Tabelle wp_options (das Präfix „wp“ kann bei euch auch anders lauten) vielfach erhalten bleiben, obwohl sie gar nicht mehr genutzt werden. Diese Tabelle wächst daher mit vielen verwaisten Einträgen an. Das macht letztendlich die Instanz auch beim Start langsamer, weil es viele Einträge gibt, die beim Start automatisch geladen werden.
Bei dem Eintrag im Website-Zustand ist der folgende Link enthalten: Weitere Informationen über die Optimierung von automatisch geladenen Optionen. Hier gibt es weitere Hinweise (die deutsche Übersetzung stammt von mir):
Having too many autoloaded options can slow down your site. Generally, you should try to keep your site’s autoloaded options under 800kb.
Generell sollten Sie versuchen, die automatisch geladenen Optionen Ihrer Website unter 800 KB zu halten.
Verwirrend finde ich den folgenden Hinweis (die deutsche Übersetzung stammt von mir):
For step-by-step instructions on viewing and changing autoloaded options, check with your hosting provider.
Eine schrittweise Anleitung zum Anzeigen und Ändern automatisch geladener Optionen erhalten Sie bei Ihrem Hosting-Anbieter.
Der Hoster wird vermutlich zu Recht darauf verweisen, dass dieses Problem mit der WordPress-Instanz zusammenhängt und damit der Hoster nicht der richtige Ansprechpartner ist.
Letztendlich kann man das Problem durch Bearbeitung der Tabelle wp_options
, z. B. über den phpMyAdmin-Zugang beim Hoster vornehmen. Aber Achtung: Löschen von Einträgen in der wp_options
ist kritisch. Da sollte man schon genau wissen, was man tut, damit die Website nicht gegen die Wand fährt. Insofern ist es sicherer und besser, entsprechende Plugins einzusetzen.
Achtung
Wichtig: Bitte vor irgendwelchen Änderungen egal ob über phpMyAdmin oder mit dem nachfolgenden Plugin Advanced DB Cleaner auf jeden Fall zumindest eine Sicherung der Datenbank vornehmen.
Das Plugin Advanced DB Cleaner
Das Plugin Advanced DB Cleaner gibt es im WordPress Repository als kostenfreie Version und als kostenpflichtige Pro-Version mit weiteren Features. Ein sehr hilfreiches Feature der Pro-Version ist beispielsweise, dass die Optionen nach ihrem „Ersteller“, als Theme, Plugin oder WP-Core klassifiziert werden. In dem Fall kann man eine Tabelle oder Option eher löschen ohne Gefahr zu laufen, dass man eine Option löscht, die für die WordPress-Instanz wichtig ist. Auf die weiteren Unterschiede wird auf der folgenden Seite sehr ausführlich eingegangen.
An dieser Stelle eine kurze Zusammenfassung:
Advanced DB Cleaner ist ein WordPress-Plugin, mit dem du die Datenbank optimieren und bereinigen kannst, um die Leistung deiner Website zu verbessern. Es hilft, unnötige Daten wie alte Revisionen, Spam-Kommentare, gelöschte Beiträge und verwaiste Daten zu entfernen, die von deaktivierten Plugins hinterlassen wurden. Dies führt zu einer kleineren und schnelleren Datenbank, so dass die Ladegeschwindigkeit deiner Website verbessert wird.
Wichtige Funktionen (Kostenlose Version):
- Alte Revisionen und Entwürfen entfernen, die nicht mehr benötigt werden.
- Kommentare entfernen, die Speicherplatz beanspruchen.
- Regelmäßige Optimierung der Tabellen zur Verbesserung der Leistung.
- Daten löschen, die von deinstallierten Plugins und Themes übrig geblieben sind (verwaiste Daten).
Zusätzliche Funktionen in der Pro-Version:
Die Pro-Version von Advanced DB Cleaner bietet erweiterte Funktionen, die eine noch umfassendere Kontrolle der Datenbank ermöglicht:
- Automatische Aufgaben zur Datenbankbereinigung einrichten, um die Datenbank kontinuierlich zu optimieren.
- Identifikation und Entfernung verwaister Tabellen und geplanter Aufgaben (Cron-Jobs), die nicht mehr benötigt werden.
- Bereinigung und Optimierung von Datenbanken in Multisite-Installationen.
- Berichte erstellen, welche Elemente bereinigt und optimiert wurden.
- Zugang zu priorisiertem Support bei Problemen.
Diese erweiterten Funktionen der Pro-Version sind besonders nützlich für größere oder komplexere WordPress-Websites wie WooCommerce-Shops oder auch älteren WordPress-Instanzen, bei denen sich über die Zeit viele unnötige Daten ansammeln können.
Achtung
Allerdings habe ich auf einigen Instanzen festgestellt, dass Löschen von Einträgen bei der Pro-Version nicht immer funktionierte. Daraufhin habe ich mich mit dem Entwickler in Verbindung gesetzt. Hier die Antwort zu diesem Problem:
Regarding the … issue with deleting options, you are correct; there is a bug that prevents actions on options containing special characters. This is already on my to-do list and will be resolved soon.
Der Entwickler hatte sich zeitnah dazu geäußert.
In dem Fall habe ich die entsprechende Aktion dann über phpMyAdmin durchgeführt. Der Vorteil ist aber, dass ich über Advanced Database Cleaner Pro besser sehen konnte, welche Options zu welchem Theme oder Plugin gehören. Ein konkretes Beispiel zeige ich gleich weiter unten.
Beispiel für einen Datenbank-Hausputz
Achtung
Noch mal der Hinweis: Bitte vor irgendwelchen Änderungen egal ob über phpMyAdmin oder mit dem nachfolgenden Plugin Advanced Database Cleaner auf jeden Fall zumindest eine Sicherung der Datenbank vornehmen.
Im folgenden Beispiel habe ich mir die Datenbank einer Website vorgenommen, die seit ca. 2016 als WordPress-Instanz existiert. Im Laufe der Zeit hatte ich schon mal das eine oder andere Plugin installiert, mich dann aber für eine andere Lösung oder ein anderes Plugin entschieden.
In vielen Fällen bleiben in dem Fall allerdings die Einträge in der Tabelle wp_options
erhalten und auch Tabellen in der Datenbank werden nicht in jedem Fall gelöscht.
Vorgehensweise bei diesem Beispiel
Nach Installation des Plugins Advanced Database Cleaner (ADC) habe ich zunächst einen Scan der Tabellen durchgeführt:
Wenn man sich nicht sicher ist, sollte man die Tabellen auf jeden Fall nicht löschen. Um herauszufinden, ob die als „verwaist“ (Orphans) gekennzeichneten Tabellen nicht doch benötigt werden, habe ich zunächst nach der Tabelle über Google gesucht.
Beispiel: Tabelle wp_icwp_wpsf_statistics
Suche über Google: wp_icwp_wpsf_statistics WordPress Plugin
Auf diese Weise war schnell klar, dass diese Tabelle von dem Plugin „Shield Security – Smart Bot Blocking & Intrusion Prevention Security“ verwendet wird, das ich auf der Instanz vor einiger Zeit verwendet habe. Das Plugin ist allerdings schon länger nicht mehr installiert.
So gehe ich zunächst alle Tabellen durch, die nicht zugeordnet werden können und als verwaist dargestellt werden.
Weitere Beispiele:
- APCu Manager – WordPress-Plugin: wp_apcm_statistics.
- Real Cookie Banner: alle Tabellen, die mit „wp_rcb_“ beginnen.
- Shield Security – Smart Bot Blocking & Intrusion Prevention Security: wp_icwp_wpsf_statistics
- Contact Form Email: wp_cftemail_messages
Nachfolgend einige Screenshots zur Vorgehensweise bei options und tables:
Bearbeitung in phpMyAdmin
In wenigen Fällen war es leider nicht möglich, options über Advanced Database Cleaner Pro zu löschen. Dann hat man aber zumindest eine Kontrolle der options über das Plugin und kann mit den nachfolgenden SQL-Anweisungen über phpMyAdmin die in Frage kommenden Options löschen. Man kann dazu auch das Plugin WP phpMyAdmin verwenden, das aber aus Sicherheitsgründen direkt nach Durchführung der Maßnahmen wieder gelöscht werden sollte.
Abfrage alle options, bei denen Abfrage autoload ‚yes‘, ‚on‘, ‚auto-on‘, ‚auto‘ enthält:
SELECT option_name, option_value, autoload
FROM wp_options
WHERE autoload IN ( 'yes', 'on', 'auto-on', 'auto' )
ORDER BY option_name;
Abfrage alle options, bei denen Abfrage autoload = ‚yes‘ ist und bei denen die options mit leaflet_osm beginnen:
SELECT option_name, option_value, autoload
FROM wp_options
WHERE autoload IN ( 'yes', 'on', 'auto-on', 'auto' ) and option_name LIKE 'leaflet_osm%'
ORDER BY option_name;
Ändern autoload = ’no‘, bei denen die options mit leaflet_osm beginnen:
UPDATE wp_options
SET autoload = 'no'
WHERE autoload IN ( 'yes', 'on', 'auto-on', 'auto' ) and option_name LIKE 'leaflet_osm%';
Die folgende Anweisung hat funktioniert, sollte aber nur im Notfall ausgeführt werden, wenn man sich wirklich sicher ist und nachdem man zumindest eine Sicherung der Datenbank erstellt hat:
DELETE FROM `wp_options` WHERE option_name LIKE 'leaflet_osm%';
Am Ende war bei dieser WordPress-Instanz die Datenbank wesentlich kleiner: Statt vorher 30.26 MB konnte ich die Datenbank mit diesen Maßnahmen auf 15.5 MB verkleinern, also fast die Hälfte. Das macht sich natürlich letztendlich auch bei der Performance der Website bemerkbar.
Fazit
Das ist wirklich eine hochinteressante Sache: Durch die von mir beschriebenen Maßnahmen kann man in der Tat die Performance einer WordPress-Website steigern. Allerdings solltet ihr vorsichtig sein: Man muss schon genau wissen, welche Tabellen in der Datenbank und welche Optionen in der Tabelle wp_options
überflüssig sind, damit man nicht die Website vor die Wand fährt. Daher ist eine Sicherung zumindest der Datenbank auch zwischendurch eine sehr wichtige Sache. Wie man Sicherungen mit Plugins durchführen kann, beschreiben wir in dem folgenden Beitrag. Aktuell verwenden wir neben UpdraftPlus auch das Plugin Backup Migration, das sehr einfach zu bedienen ist.
Haftungsausschluss für SQL-Statements und Datenbankoptimierung
Bevor du die hier genannten SQL-Statements ausführst oder das Plugin Advanced DB Cleaner zur Datenbankoptimierung verwendest, beachte bitte Folgendes:
- Führe vor jeder Änderung ein vollständiges Backup deiner WordPress-Datenbank durch.
- Teste SQL-Statements und Datenbankoptimierungen zuerst in einer sicheren Testumgebung.
- Die Ausführung von SQL-Statements und Datenbankoptimierungen erfolgt auf eigenes Risiko. Ich übernehme keine Haftung für eventuelle Datenverluste oder Schäden.
- Stelle sicher, dass du über ausreichende Kenntnisse in SQL und Datenbankadministration verfügst.
- Passe SQL-Statements an deine spezifische Datenbankstruktur an.
- Bei der Verwendung von Advanced DB Cleaner:
- Überprüfe sorgfältig, welche Elemente du bereinigen möchtest.
- Nutze die Vorschaufunktion, um die Auswirkungen einzuschätzen.
- Beginne mit weniger kritischen Bereichen wie Spam-Kommentaren.
- Beachte, dass aggressive Datenbankoptimierungen die Funktionalität deiner Website beeinträchtigen können.
Sollte sich doch trotz sorgfältiger Prüfung meinerseits ein Fehler eingeschlichen haben, freue ich mich über einen Kommentar.
Links, Quellen und aktuelle Infos
- Informationen über die Optimierung von automatisch geladenen Optionen:
https://developer.wordpress.org/advanced-administration/performance/optimization/#autoloaded-options - Advanced Database Cleaner:
https://de.wordpress.org/plugins/advanced-database-cleaner/ - Advanced Database Cleaner als Pro-Version
https://sigmaplugin.com/downloads/wordpress-advanced-database-cleaner/?ref=373 - WP phpMyAdmin
https://wordpress.org/plugins/wp-phpmyadmin-extension/ - Thread im Forum: Automatische geladene Optionen – wp_options nur 500 kb
https://de.wordpress.org/support/topic/automatische-geladene-optionen-wp_options-nur-500-kb/ - How to clean a WordPress database with the Advanced Database Cleaner plugin:
https://www.a2hosting.com/kb/installable-applications/optimization-and-configuration/wordpress2/wordpress-plugins/cleaning-a-wordpress-database-with-advanced-database-cleaner-plugin/ - Der ultimative Leitfaden zur WordPress-Datenbank-Optimierung
https://wp-umbrella.com/de/blog/wordpress-database-optimization/
Weitere Beiträge zum Thema
- Probleme mit Permalinks lösen
- Veröffentlichungsdatum und Aktualisierungsdatum in Templates
- Datenbank-Hausputz – WordPress: Advanced DB Cleaner
- Pattern (Vorlagen) bearbeiten, umbenennen und exportieren
- Navigation-Block in WordPress: Neue Navigation – Responsive Navigation
Wir freuen uns über eine Kontaktaufnahme
Was hältst du davon?
Wir hoffen, dieser Beitrag hat dir gefallen und wir würden uns über einen Kommentar freuen. Auch über Erweiterungen, Korrekturen, Hinweise oder sonstige Anmerkungen freuen wir uns sehr.
- Auf der folgenden Seite findest du weitere interessante Beiträge sortiert nach Kategorien und Schlagwörtern.
- Wenn du über unsere neuesten Beiträge informiert werden möchtest, kannst du dich gerne bei unserem Newsletter anmelden.
Schreibe einen Kommentar