Optimierungen der Datenbank bei WordPress

Heute mal ein Blogeintrag, der nur für Anwender mit einem WordPress-Blog gedacht ist und zugleich für mich als Gedächtnisstütze 😉

Im Regelfall werden beim Schreiben eines Beitrages über das Backend in Worpress automatisch in regelmäßigen Intervallen sog. Revisionen erstellt. Diese Speicherungen sind grundsätzlich nicht schlecht, kann man seine Arbeit doch einfach unterbrechen und hat zumindest einen Großteil bereits automatisch gespeichert, sollte einmal der Strom ausgehen, der Browser abstürzen o.ä.

Arbeitet man aber länger an einem Beitrag kommen schnell viele solcher Revisionen zusammen, die jeweils einen eigenen Eintrag in der Datenbank von WordPress erhalten. Nein, es wird nicht ein Eintrag erstellt, der einfach aktualisiert wird, sondern immer ein Neuer.

Mit der Zeit wird dadurch der Speicherplatz, den die Datenbank belegt, immer mehr. Abhilfe kann man auf verschiedene Weise schaffen, beispielsweise indem man die Anzahl der maximalen Revisionen beschränkt, das Intervall bis zur nächsten Speicherung vergrößert oder die Erstellung dieser komplett deaktiviert.

Um das Intervall der Revisionierung nach oben oder unten zu ändern, fügt bitte folgenden Eintrag in der Datei “wp_config” hinzu:
define(’AUTOSAVE_INTERVAL’, 60);
Wobei der am Ende angegebene Wert die Zeit in Sekunden zwischen den Intervallen darstellt.

Zur Deaktivierung der automatischen Speicherung fügt bitte in der Datei “wp_config” folgenden Eintrag hinzu:
define(’WP_POST_REVISIONS’, false);

Möchtet Ihr nur die Anzahl begrenzen, setzt bitte anstelle des ‘false’ einfach die Anzahl ein, beispielsweise die 5 für maximal 5 Revisionen:
define('WP_POST_REVISIONS', 5);

Die Optimierung

Die eigentliche Optimierung findet jetzt statt. Um die MySQL-Datenbank von den bisher erstellten Revisionen zu befreien und diese zu löschen, loggt euch bitte in die Verwaltungsoberfläche der Datenbank ein. Im Regelfall ist dies der phpMyAdmin oder Adminer und wechselt in die Option “SQL” zur Ausführung von MySQL-Statements.

Bei den nachfolgenden MySQL-Statements sollte daran gedacht werden, dass der Tabellennamen-Präfix nicht zwangsweise wp_ sein muss. Solltet Ihr diesen aus Sicherheitsgründen o.ä. geändert haben, passt die Einträge bitte vorher an. Ebenfalls empfehle ich, vor der Ausführung der Löschung (DELETE) ein aktuelles Backup der Datenbank zu erstellen bzw. bereitstehen zu haben. Nur um sicher zu gehen.

Revisionen nur zählen:
SELECT COUNT(*) FROM `wp_posts` WHERE `post_type` = "revision";

Revisionen ausgeben:
SELECT * FROM `wp_posts` WHERE `post_type` = "revision";

Aufräumen – Alle Revisionen löschen:
DELETE FROM `wp_posts` WHERE `post_type` = "revision";

Revisionen entfernen

Revisionen entfernen

Mit der Zeit entsteht in einer Datenbank auch Überhang (Overhead). Das ist Speicher der durch viele Aktionen wie INSERTs und DELETEs in Tabellen reserviert wird und sich sozusagen “aufbläht” und dann permanent reserviert bleibt. Dieses Verhalten ist ganz normal und auch richtig so und hat nichts speziell WordPress zu tun. Der Speicher ist zwar meistens leer, durch die Reservierung kann er aber auch bei Backups und aufwendigen Datenbankabfragen zum Flaschenhals der Performance werden.

Ähnlich wie bei der Defragmentation einer Festplatte kann dieser Speicher aber optimiert werden. Mit dem Befehl OPTIMIZE TABLE wird nicht verwendeter Speicher in der Tabelle freigeben und die Datendatei defragmentiert. Im phpMyAdmin kann man anhand der Spalte mit der Bezeichnung “Überhang” ganz leicht erkennen, welche Tabellen optimiert werden sollten.

Markieren Sie die Tabelle(n) und wählen im Dropdown “Optimiere Tabelle” (OPTIMIZE TABLE) aus (siehe Screenshot). Die Optimierung wird dann sofort ohne weitere Nachfrage gestartet.

Tabellen optimieren

Tabellen optimieren

Eine solche Optimierung sollte von Zeit zu Zeit ausgeführt werden, etwa einmal im Monat ist dabei vollkommen ausreichend.

Plugins für diese Arbeiten

Für das Entfernen von Revisionen und der De-/Aktivierung dieser existieren auch diverse Plugins:

Remove Revisions
Revision Removal (letztes Update 2011)
Better Delete Revision (letztes Update 2010!)

Auch das Plugin WP-Optimize kann vorhandene Revisionen entfernen und noch weitere Aufgaben ausführen wie das Löschen nicht genehmigter Kommentare oder der Ausführung des oben beschriebenen “OPTIMIZE TABLE” in der Datenbank.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert