WordPress-Revisionen: Speicherbedarf, Grenzen und verlässliche Messung

Inhalt
Revisionen speichern frühere Bearbeitungsstände in WordPress. Das erleichtert den Vergleich und die Wiederherstellung von Texten, vergrößert aber auch den Datenbestand. Eine große Zahl von Revisionen beweist weder einen Defekt noch eine langsame Website.
Eine schreibgeschützte Messung dieser Website am 24. Oktober 2026 um 04:19 UTC ergab 7.635 Revisionen in insgesamt 12.284 Zeilen der Beitragstabelle. Rund 79,4 Prozent der dort gespeicherten Inhaltstext-Bytes entfielen auf Revisionen. Diese Momentaufnahme ersetzt die früheren, inzwischen überholten Zahlen.

Was WordPress tatsächlich speichert
Eine Revision enthält standardmäßig Titel, Inhalt und Kurztext. WordPress speichert dabei den aktuellen Bearbeitungsstand als eigene, mit dem Beitrag verknüpfte Zeile. Nach weiteren Änderungen wird daraus ein älterer Stand. Entsprechend registrierte Metadaten können ebenfalls an Revisionen teilnehmen. Eine Revision ist trotzdem keine vollständige Sicherung aller Beitragseigenschaften oder der Website.
Nicht jeder Speichervorgang erzeugt eine neue Revision: Der Beitragstyp muss Revisionen unterstützen, Revisionen müssen aktiviert sein und die relevanten Felder müssen sich normalerweise geändert haben. Filter können dieses Verhalten beeinflussen. Ein Skript mit 300 bearbeiteten Beiträgen erzeugt deshalb nicht zwangsläufig 300 Revisionen. Direkte SQL-Änderungen umgehen die üblichen WordPress-Abläufe vollständig.
Automatische Zwischenspeicherungen funktionieren anders: WordPress verwaltet einen Autosave je Beitrag und Benutzer. Ein vorhandener Autosave wird aktualisiert; bei Übereinstimmung mit dem gespeicherten Beitrag kann der Autosave entfallen.
Zeilen zählen statt Schätzwerte vergleichen
Die untersuchte Tabelle verwendet InnoDB. Für diesen Speichermotor kann information_schema.TABLES.TABLE_ROWS eine Schätzung liefern. Während der Messung zeigte die Übersicht 10.649 Zeilen, die direkte Zählung dagegen 12.284. Das ist kein Beleg für verlorene Datensätze.
Die direkte Zählung ergab 7.635 Revisionen, 2.958 Anhänge, 1.689 Beiträge und Seiten sowie zwei weitere Datensätze für globale Stile und Navigation. Die 1.689 Beiträge und Seiten umfassen sämtliche Statuswerte, darunter Entwürfe, geplante Beiträge und Papierkorb. Tatsächlich veröffentlicht waren 1.290 Beiträge und Seiten. Ein Anhangsdatensatz entspricht zudem nicht jeder automatisch erzeugten Bilddatei.

Textmenge ist nicht Dateigröße
Mit OCTET_LENGTH(post_content) wurden 92.563.135 Byte in Revisionen und 23.963.672 Byte in Beiträgen und Seiten gemessen: rund 88,3 beziehungsweise 22,9 MiB. Ein MiB entspricht 1.048.576 Byte. Die zwei übrigen Datensätze enthielten zusammen weitere 74 Byte; die Anhänge hatten in dieser Messung leere Inhaltstexte. Anhänge können grundsätzlich Beschreibungen enthalten.
Die Abfrage misst ausschließlich die Spalte post_content. Titel, andere Spalten, Metadaten, Indizes und bereits reservierter Tabellenplatz fehlen. Aus 88,3 MiB Revisionstext folgen daher weder 88,3 MiB freigebbarer Festplattenplatz noch eine gleich große Verringerung komprimierter Sicherungen.
Welche Kosten daraus folgen
Übliche öffentliche Beitragsabfragen schließen Revisionen aus. Daraus folgt keine Garantie identischer Ladezeiten mit oder ohne Revisionen: Abfragen, Indizes, Caches, Erweiterungen und Verwaltungsansichten können sich unterschiedlich verhalten. Diese Prüfung enthält keinen Vergleichstest der Ladegeschwindigkeit.
Zusätzliche Datensätze erhöhen den Umfang logischer Datenbankexporte. Die Auswirkungen auf Sicherungsdauer und Übertragung hängen jedoch unter anderem von Kompression, Datenträgern und Exportverfahren ab. Dreimal so viel Inhalt bedeutet nicht automatisch dreimal so lange Kopierzeit.
Aufbewahrung gezielt begrenzen
WP_POST_REVISIONS steuert die reguläre Aufbewahrung: true oder -1 bedeutet unbegrenzt, eine positive Zahl begrenzt die Revisionen je Beitrag, false oder 0 deaktiviert reguläre Revisionen. Autosaves bleiben davon ausgenommen. Die geprüfte Installation verwendete true. WordPress-Filter können die wirksame Grenze verändern.
Eine passende Grenze hängt vom Bearbeitungsrhythmus und der benötigten Rücksprungtiefe ab. Drei bis fünf Fassungen sind keine allgemeingültige Empfehlung. Vor umfangreichen Änderungen ergänzen eine geprüfte Sicherung und ein nachvollziehbares Änderungsprotokoll die Revisionen.
Fragen und Antworten
Räumt eine neue Grenze sofort alle alten Revisionen auf?
Nein. Die normale Bereinigung erfolgt beitragsweise im Ablauf einer neu angelegten Revision. Ein bloßer Konfigurationswechsel oder unverändertes Speichern bereinigt nicht automatisch den gesamten Bestand. Das Abschalten regulärer Revisionen löscht bestehende Revisionen ebenfalls nicht.
Warum nicht direkt aus der Beitragstabelle löschen?
Ein einzelnes SQL-DELETE kann zugehörige Metadaten und Cache-Einträge zurücklassen. Die WordPress-Funktion wp_delete_post_revision() verwendet den regulären Löschablauf einschließlich der zugehörigen Bereinigung. Eine Bestandsbereinigung benötigt eine geprüfte Sicherung und eine ausdrücklich festgelegte Auswahl. Bei dieser Messung wurden keine Revisionen gelöscht.
Wird die Tabellendatei nach dem Löschen kleiner?
Nicht zwangsläufig. InnoDB kann freigegebenen Platz intern wiederverwenden. Ob ein Neuaufbau Platz an das Dateisystem zurückgibt, hängt unter anderem von Tablespace und Konfiguration ab. Ein Neuaufbau kann zusätzlichen Platz und Wartungszeit benötigen; ein pauschaler OPTIMIZE-TABLE-Befehl folgt daraus nicht.
Welche Abfrage zeigt die Verteilung?
Die folgende reine Leseabfrage trennt Beitragstyp und Status. Das Präfix wp_ muss dem tatsächlichen Tabellenpräfix entsprechen.
SELECT post_type, post_status,
COUNT(*) AS row_count,
COALESCE(SUM(OCTET_LENGTH(post_content)), 0) AS content_bytes
FROM wp_posts
GROUP BY post_type, post_status
ORDER BY post_type, post_status;
Die Bytezahl betrifft nur den Inhaltstext. Bei laufender Bearbeitung können aufeinanderfolgende Abfragen unterschiedliche Momentaufnahmen liefern.
Quellen
- WordPress: wp_save_post_revision()
- WordPress: revision fields
- WordPress: wp_create_post_autosave()
- WordPress: wp_revisions_to_keep()
- WordPress: Revisions
- WordPress: wp_delete_post_revision()
- WordPress: wp_delete_post()
- MariaDB: Information Schema TABLES
- MariaDB: OPTIMIZE TABLE
- WordPress developer resources