WordPress Datenbank optimieren – vier praktische Tipps

W

WordPress hat sich mittlerweile als quasi Standard für den Betrieb von Blogs durchgesetzt. Und das im Prinzip auch zu recht, nicht zuletzt dank der riesigen Menge an Plugins, Themes und Supportforen und -Blogs. Allerdings gibt es ein Problem, dass man für die eigene Installation selber lösen muss: Die Datenbank performant zu halten.

Mir fiel in letzter Zeit auf, wie ungewohnt schnell ich in manchen (meist neueren) Blogs von mir Artikel schreiben, editieren und veröffentlichen kann – und wie elendig lange das hier im Agenturblog dauert. Dieses träge Verhalten stellte sich übrigens nicht schlagartig, sondern eher in Form eines schleichenden Prozesses ein. Auch die Performance der Seite selbst lies in den letzten Wochen immer mehr zu wünschen übrig. Dabei stellen sicher die nach wie vor gut zweitausend täglichen Porno(be-)sucher ein großes Problem da, denn addiert mit den regulären Besuchern und Lesern die via Suchmaschine den Weg in dieses Blog finden, muss meine Installation an Spitzentagen deutlich über 5.000 Seitenaufrufe bewältigen.

Natürlich ist WordPress grundsätzlich in der Lage diese Werte zu bedienen, aber ab einem gewissen Punkt werden Optimierungen einfach zwingend erforderlich.

Im Folgenden habe ich eine kleine Liste mit Tipps zusammengestellt, die mir geholfen haben das Agenturblog wieder deutlich flotter zu gestalten. Natürlich würde ich diese Sammlung gerne um Euer Feedback und Eure Erfahrungen erweitern:

1. Weniger Queries in den Templates.
Das sollte der erste Schritt sein: Sind alle Datenbankabfragen die Euer Blog erzeugt wirklich erforderlich? Steht Sinn und Nutzen der vielen Plugins jeweils im Verhältnis zur Last, die sie erzeugen? In jedem Fall bietet ein gründliches Aufräumen und Aussortieren gleich den ersten großen Schritt zur Steigerung der Performance bzw. Reduzierung der Datenbank aufrufe.

2. Datenbank von altem Ballast befreien
Über die Monate und Jahre der Nutzung füllt sich eine WordPress Datenbank zunehmend mit Inhalten, die eigentlich niemand braucht. Unmengen von Spam Kommentaren schlummern vor sich hin, Tabellen und Informationen von Plugins die man kurz getestet aber wieder verworfen hat bleiben bestehen, ebenso alte Kategorien die seit dem Umstieg auf Tagging nicht mehr genutzt werden – hier gibt es viel aufzuräumen und zu optimieren. Dazu ist zum einen das Plugin Clean Options empfohlen, das alle verwaisten Einträge aus der wp_option Tabelle auflistet und zur Entfernung anbietet. Zum anderen bietet Dietmar Rabichs Database Tuning eine Reihe von Option zum entfernen alter Inhalte (bspw. Spam Kommentare), ausserdem untersucht es die einzelnen Tabellen, kann sie im Bedarfsfall reparieren oder durch das setzen neuer Indizes den Lesezugriff darauf optimieren.

Wie immer gilt natürlich vor dem Anfassen der Datenank: Backup nicht vergessen.

3. Unveröffentlichte Beiträge löschen
Ein weiterer Wust an überflüssigem Ballast sammelt sich über die Zeit im Bereich der Entwürfe oder Drafts an: All die Artikel die man (noch) nicht zu Ende geschrieben hat. Die Wahrscheinlichkeit, dass man an einen Wochen, Monate oder gar Jahre alten Beitrag jemals wieder Hand anlegt und ihn doch noch online stellt ist gering. Zumindest wenn ich mir mein Verhalten ansehe. So dümpeln schnell unzählige halbgare Artikel in der Datenbank herum. Wahrscheinlich oft us dem einfachen Grund der schlechten Verwaltungsmöglichkeiten der Drafts in WordPress. Schlichtweg eine kleine Katastrophe. Leidglich aktuellsten Entwürfe werden beim Verfassen neuer Artikel aufgelistet – keine Gesamtübersicht, keine Möglichkeit alle in einem Rutsch zu löschen – nichts. Mit dem kleinen Tool Draft Controll lässt sich endlich schnell und sinnvoll sortieren. Im Gegensatz zu den anderen Tipps lassen sich hiermit keine Riesensprünge im Hinblick auf eine Performance-Optimierung machen, dennoch – und wenn es nur für das gute Gefühl ist – macht es Sinn auch in diesem Bereich einmal aufzuräumen. Ich konnte 52 alte Entwürfe löschen.

4. Caching aktiviert?
Selbst mit reduzierter Anzahl von Queries und weniger Inhalten in der Datenbank kann es durchaus sinnvoll sein, Inhalte die bereits ausgeliefert wurden temporär zwischenzuspeichern und (innerhalb eines bestimmten Zeitfensters) ausschließlich als statische Seiten, also nahezu ohne neue Datenbankanfragen, zu übermitteln.

Dazu kann man wahlweise das Plugin WP-Cache nutzen, oder WordPress direkt zum Caching überreden. Vermutlich ist die letztere Variante die bessere Wahl und auch sehr einfach zu bewerkstelligen: Ihr legt einen beschreibbaren Ordner wp-content/cache an und ergänzt folgenden Eintrag in der wp-config.php:

define('ENABLE_CACHE', true);

Sofern man sein Blog auf einem eigenen Server betreibt kann man auch das MySQL Query-Cacheing aktivieren (Tipp gefunden beim Software-Guide.de).

Darüberhinaus gibt es für technisch sehr versierte Blogger noch die Option mithilfes des Plugins Gunnart.de. Dort findet man zusätzlich noch Infos zu dem Plugin WP-Cache Inspect, dass für den Admin auf jeder Artikelseite in einer semitransparenten Box Informationen zum Cacheing Status ausgibt – und im Admin Bereich die Option ergänzt per Knopfdruck den gesamten Cache zu leeren.

Fazit
In den letzten Tagen habe ich schrittweise alle diese Punkte auf dem Agenturblog abgearbeitet und freue mich im Augenblick wieder über ein relativ schnelles und aufgeräumtes System.

33 Kommentare

Instagram