WordPress Datenbank optimieren – vier praktische Tipps

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.



12 Kommentare

  1. Lars
    25. Oktober 2008 at 13:19 #

    Das mit der Google-Crawlrate kannte ich garnicht, klingt auf jedenfall interessant, aber ich vermute mal, dass die meisten viel Wert darauf legen, dass Google oft und schnell kommt ;-)

  2. K.B.
    08. Februar 2008 at 06:43 #

    Relativ viel Traffic und Performance des Servers verbraucht auch der Googlebot beim Spidern des Blogs. Besonders bei Blogs mit vielen Seiten. Wer nicht unbedingt darauf Wert legt, dass der Googlebot neue Seiten möglichst schnell indiziert kann deshalb in den Google Webmastertools die Indizierungsgeschwindigkeit herabsetzen.

  3. britney spears
    05. Januar 2008 at 00:02 #

    Hallo, danke für die Tipps. Leider hat das Ausmisten nicht so viel gebracht, da muss wohl ein größerer Server her.

  4. Savvas
    21. Dezember 2007 at 23:50 #

    Cool…

  5. Meissner
    18. Dezember 2007 at 20:42 #

    Vielen Dank für die Tipps, werde mich die nächsten Tage mal daran setzen meine WPMU Version ein wenig zu optimieren, meine Installation ist zwar noch nicht so alt aber die Performance lässt jetzt schon zu wünschen übrig.
    Grüsse

  6. Kai Müller
    12. August 2007 at 22:27 #

    Danke für die Tipps und die Verweise auf die Plugins. Habe Freitag einiges davon umgesetzt und tatsächlich wieder einiges an Speed gewonnen.

  7. onesevenone
    07. August 2007 at 23:58 #

    Danke für die Liste! Hab auch schon gehört dass es da irgendwann Probleme gibt. Aber jetzt muss mein Blog erst mal noch wachsen!

  8. Meike
    03. August 2007 at 14:20 #

    Habe zwar erst frisch mit dem Bloggen angefangen, aber ich denke, wenn man gleich von Anfang an auf eine entschlackte DB achtet, ist dies bestimmt von Vorteil. Danke daher für den Post ;-)

  9. NilsR
    02. August 2007 at 11:30 #

    Mein Blog ist auch so langsam geworden, nun werde ich deine Tipps mal abarbeiten. Vor allem die ausprobierten Plugins im Laufe der Zeit (Bei mir seit April 2006) müllen die DB richtig zu…

  10. Paul
    28. Juli 2007 at 12:49 #

    Das Plugin um die wp_options endlich mal zu säubern kannte ich auch noch nicht, danke für den Tipp. Ich möchte noch anmerken, dass alle die noch eine WP Version vor 2.1 einsetzen auch wegen der Performance unbedingt upgraden sollten. Seit 2.1 gibt es einige Verbesserungen in der DB-Struktur, einige weitere Indexe etc. So wie ich das mitbekommen habe, wurden diese Anpassungen direkt vom MySQL.com Team durchgeführt.

    Grüße

    Paul

  11. Lennard
    28. Juli 2007 at 01:22 #

    Vielen Dank für den Tipp gegen verwaiste Datensätze in wp_options! Vorgestern habe ich mich erst über das dortige Chaos geärgert und befürchtet, selbst herumpfuschen zu müssen. Dass es dafür ein eigenes Plugin gibt hätte ich nicht gedacht.