
Mit beinahe jedem WordPress-Plugin werden Informationen in der Datenbank abgelegt. Das ist ein Problem, denn je größer und aufgeblähter die Datenbank, umso langsamer ist am Ende die eigene Website. Doch mit der Deinstallation unbenötigter Plugins ist es allein nicht getan, bleiben die Überreste des Plugins als Leichen doch immer in der Datenbank zurück. Und einen Großteil aller Plugins halte ich grundsätzlich eh für überflüssig, die sollte man gar nicht erst installieren.
Wie man die Datenbank von unnötigem Balast befreit, das möchte ich hier einmal näher vorstellen. Zunächst jedoch zwei Beispiel, wie die Datenbank von Plugins mit Informationen gefüllt wird.
Inhalte dieses Artikels
Negativ-Beispiel: Socialize
Socialize ist ein Plugin, mit dem sich mit wenigen Klicks Sharing-/Social-Buttons einem WordPress-Blog und jedem einzelnen Beitrag zuordnen lassen. Das Plugin ist für diejenigen gut geeignet, die sich vor dem manuellen Einbau dieser Buttons scheuen und sich den Aufwand nicht machen wollen. Doch das Plugin hat ein großes Manko: Für jeden einzelnen Beitrag werden in der Datenbank Informationen darüber abgelegt, wie der Hinweistext lautet und welche Buttons eingefügt werden sollen; Und das, obwohl die meisten Plugin-Nutzer eine Einstellung für alle Beiträge nutzen dürften. Für jeden Beitrag werden also zwei Extra-Zeilen mit eigentlich nicht notwendigen Informationen in der Datenbank abgelegt. Wie viel Ballast das bei beispielsweise 500 Beiträgen erzeugt, wird sich jeder leicht ausrechnen können.
Positiv-Beispiel: wpSEO
Intelligenter gelöst wird das Ablegen von Informationen in der Datenbank etwa von wpSEO, dem SEO-Plugin von Sergej Müller.
Zum Einen macht das Ablegen von Informationen zu jedem einzelnen Beitrag hier viel mehr Sinn: Jeder einzelne Beitrag muss hinsichtlich der ihm eigenen Keywords für die Suchmaschine optimiert werden. Da ist es eben notwendig, dass auch jeder einzelne Beitrag andere Informationen erhält.
Zum anderen geht das Plugin jedoch intelligent vor: Es legt nur dann Extra-Informationen in der Datenbank ab, wenn sich der Nutzer zur Anpassung der Standard-Werte entscheidet. Nur bei Abweichungen von den einmal eingestellten und so abgespeicherten Standard-Werten füllt das Plugin die Datenbank mit diesen Informationen. Wer sich also entscheidet bei einem neuen Artikel einfach bei den Standard-Werte zu bleiben, der muss auch keine aufgeblähte Datenbank fürchten.
Ressourcenfresser identifizieren
Um diejenigen Plugins zu finden, die die Datenbank zumüllen, reicht meist ein Blick in die Datenbank-Struktur und hier vor allem in die Tabellte wp_postmeta! Sich hier durch die ersten 50-60 Zeilen zu arbeiten, zeigt in der Regel schon diejenigen Plugins auf, die immer wieder die gleichen Informationen in der Datenbank ablegen. Sind die Plugins dann noch einigermaßen klug entwickelt, so ist auch der Name des Plugins als “meta_key” gespeichert.
Auch Frameworks “helfen” mit
Doch auch die von mir so verhassten und in meinen Augen vollkommen überflüssigen Frameworks tragen ihren Teil bei: Zwar ermöglichen sie unbedarften Nutzern eine vereinfachte Adminstration und Einrichtung ihres Blogs/Themes, sie legen aber jede Menge Informationen in der Datenbank ab, die eigentlich auch direkt in den Templates gespeichert werden könnten. Die Themes von “woothemes” sind hier leider immer wieder Spitzenreiter und legen gern mal einige hundert Zeilen Informationen in der Datenbank ab.
WICHTIG: Datenbank-Backup anlegen
Bevor man irgendwas an der Datenbank ändert, ist zunächst ein Backup anzulegen! Jede kleinste, falsche Änderung kann im schlimmsten Fall dazu führen, dass der Blog danach nicht mehr funktioniert und gerettet werden muss. Also: Bevor ihr Zeilen löscht, erst ein Backup machen. Das funktioniert – auch OHNE PLUGIN – relativ einfach. Hier eine kleine Videoanleitung zu phpMyAdmin, das vermutlich auf den meisten Servern zum Einsatz kommen sollte.
Erst wenn das Datenbank-Backup erstellt und sicher auf deinem lokalen Rechner gespeichert ist, solltest du weitermachen!
Plugins deinstallieren
Der erste folgende Schritt ist die Deinstallation der als überflüssig festgestellten Plugins. Dazu könnte zum Beispiel “Socialize” gehören. Ist das Plugin deaktiviert und gelöscht (WordPress bringt die passenden On-Board-Mittel dazu ja gleich mit), wirst du aber feststellen, dass die Datenbank immer noch so zugemüllt wie vorher ist.
Datenbank bereinigen
Jetzt kommt der wichtigste Schritt: Alle Zeilen des zuvor deinstallierten Plugins müssen jetzt gelöscht werden. Dazu wählst du abermals die Tabelle “wp_postmeta” aus und markierst dort alle Zeilen, die überflüssigen Ballast enthalten. Ein Klick auf löschen (das ist in phpMyAdmin das rote “X”-Icon) wird die Zeilen löschen. Damit du aber nichts falsches löschst, musst du diesen Schritt dann noch einmal bestätigen. Erst danach sind die Zeilen wirklich gelöscht.
Suchfunktion nutzen
Nun kann das manuelle Auswählen einzelner Zeilen aber eine langwierige Angelegenheit werden, wenn ein Plugin jedem Beitrag 2, 3 Zeilen hinzugefügt hat. Aber auch da gibt es Abhilfe: Einfach die Suchfunktion nutzen. So lässt sich beispielsweise in phpMyAdmin nach einem Ausdruck suchen, die Suche liefert dann alle Zeilen mit diesem Ausdruck. So können alle Zeilen mit einem Mal gelöscht werden.
Letzter Schritt: Datenbank optimieren
Mit dem Löschen der Zeilen sind diese zwar verschwunden, bleiben aber als Überhang in der Datenbank bestehen. (Keine Ahnung warum das so ist, dafür kenne ich mich mit MySQL und phpMyAdmin zu wenig aus.) Diesen Überhang muss man dann noch loswerden. Dafür gibt es in MySQL die Bereinigungs-Option, in phpMyAdmin sieht das etwa so aus:
Vorher-Nachher-Vergleich
Ein Vergleich zeigt: Die Datenbanklast kann durch das Entfernen eines Plugins und des damit zugehörigen Bereinigen der Datenbank reduziert werden. Die “Ersparnis” in echter Größe mag marginal sein. Bei mir hat das Deinstallieren von Socialize aber immerhin dazu geführt, dass insgesamt 53 Zeilen gelöscht wurden. 53 Zeilen, die bei zukünftigen Datenbankaufrufen nicht berücksichtigt werden müssen. Setze ich jetzt noch bei anderen Plugins an, deren Aufgabe man auch mit etwas Programmieraufwand obsolet machen kann, so lässt sich die Datenbank noch weiter verkleinern.
Eure Erfahrungen
Wie sind eure Erfahrungen? Welche Plugins sind echte Ressourcenfresser und Datenbankbeschmutzer? Und wie viel Speicher konntet ihr durch die Bereinigung gewinnen, wie viele Zeilen löschen? Ich bin auf eure Ergebnisse gespannt!
7 Kommentare zu "Datenbank bereinigen und WordPress beschleunigen"
Adrian, danke dir für den Artikel und den Vergleich.
So 2 Mal im Jahr gehe ich ebenfalls durch die Datenbanktabellen durch. Manchmal bleiben da Reste von Transients-Einträgen, die ich dann manuell entferne. Dem Toolbox-Plugin liegt ja ein Modul namens optimize_db bei, welches seit der Aktivierung die Datenbanktabellen optimiert.
Vielmehr ist da nicht zu machen. Aber zugegeben, habe ich auch nur eigene Plugins installiert 😉
Das kann ich leider nicht von mit behaupten.;-)
Ich finde es auch nur so schade, dass so viele Plugins so liederlich programmiert sind. Dazu gehört teilweise übrigens auch Yoast.;-)
Der Beitrag sollte ja auch nur exemplarisch an einem Plugin zeigen, was man so machen kann/sollte.
Mache es genauso wie Du, versuche möglichst viele Plugins durch Code im Theme zu ersetzen, bereinige immer wieder mal die DB manuell und nutze zusätzlich das Toolbox-Plugin von Sergej um die DB zu optimieren.
Jede Website, also auch eine WP Installation bedarf eben laufender Pflege um die Performance zu behalten. Je mehr Plugins umso mehr Arbeit, aber das sollte ja bekannt sein 😉
Nur leider ist das nicht immer allen klar. 😉
Auch ich hatte schon Kunden die noch vor der Umsetzung einer Idee mit unzähligen Plugins um die Ecke kamen, die aber unbedingt eingebaut werden müssten. Ein Großteil war dann immer obsolet…
Trackbacks zu diesem Artikel