Ab sofort möglich
Alle Preise netto zzgl. USt.
Du kaufst die Lizenz direkt bei uns und bekommst eine Rechnung von uns. Installation per Upload im Admin ohne SSH, Updates über unsere Lizenzplattform, Support direkt vom Entwickler.
So räumst du deine Shopware-Datenbank planbar und sicher auf - mit Dry-Run, Audit-Log und geplanten Tasks.
Shopware 6.7, PHP 8.1 oder neuer, MySQL ab 5.7.4 beziehungsweise MariaDB ab 10.3 - letzteres wegen der Session-Timeouts über MAX_EXECUTION_TIME. Für die automatische Bereinigung muss ein Worker laufen.
Plugin im Shopware-Admin hochladen, installieren und aktivieren. Danach erscheint das Modul unter Erweiterungen, Datenbank Cleanup & Optimizer.
Das Modul zeigt die aktuelle Lage, die manuelle Bereinigung, die Einstellungen für den automatischen Lauf und das Protokoll.
Jedes Mal, wenn im Admin eine Bestellung bearbeitet wird, legt Shopware eine Arbeitskopie an - einen Draft. Wird die Bearbeitung abgebrochen statt gespeichert, bleibt dieser Draft in den Tabellen order und order_line_item liegen.
Über Monate summiert sich das. Irgendwann laufen Admin-Formulare wie die Vorgangspositionen in Timeouts, weil sie sich durch zehntausende verwaister Zeilen arbeiten müssen. Genau diese Zeilen entfernt das Plugin.
Gelöscht wird ausschließlich, was beide Bedingungen erfüllt:
0fa91ce3... wird nie angefasst.state_machine_history und sind nicht versionsgebunden. Sie werden nicht angefasst.Abhängige Tabellen wie order_address, order_delivery und order_transaction räumen sich über die Fremdschlüssel automatisch mit auf. Es bleiben also keine Reste zurück.
Der obere Bereich zeigt live, wie viele verwaiste Bestell- und Positionsversionen existieren und wie viele davon älter als sieben Tage sind. Das ist der ehrliche Blick darauf, ob sich ein Lauf überhaupt lohnt.
Die Vorschau vor dem ersten scharfen Lauf zu nutzen, ist sinnvoll - sie kostet nichts und zeigt die Größenordnung.
Optional läuft die Bereinigung selbstständig. Einstellbar sind das Intervall - stündlich, alle 2, 6 oder 12 Stunden, täglich oder wöchentlich - sowie das Mindestalter und die Aufbewahrungsdauer der Protokolleinträge.
messenger:consume. Ohne Worker passiert nichts.Jeder echte Lauf wird protokolliert, egal ob er aus dem Admin, per Konsole oder automatisch angestoßen wurde. Festgehalten werden Zeitpunkt, Auslöser, Benutzer, Anzahl gelöschter Zeilen und Dauer.
Während eines Laufs zeigt der Fußbereich einen Sekundenzähler. Der Vorgang lässt sich jederzeit abbrechen; bereits laufende DELETE-Batches werden noch sauber zu Ende geführt, damit die Datenbank konsistent bleibt.
Der erste Befehl zeigt nur an, was gelöscht würde. Der zweite räumt tatsächlich auf, mit Fortschrittsanzeige im Terminal.
--age-days, -a Standard: 7--batch-size, -b Standard: 50000--dry-run, -d--force, -fWenn die Tabellen bereits Probleme machen, hat sich dieser Ablauf bewährt:
Idealerweise in einer tmux- oder screen-Sitzung, damit der Lauf einen Verbindungsabbruch übersteht. Danach die automatische Bereinigung aktivieren, täglich mit sieben Tagen Mindestalter - dann bleibt es dauerhaft sauber.
InnoDB markiert gelöschte Seiten nur als frei und gibt den Platz nicht ans Dateisystem zurück. Erst dieser Befehl holt ihn wirklich:
Wenn ein Lauf unerwartet null Zeilen löscht, hilft dieser Endpoint bei der Ursachensuche:
Er liefert exakte Zählungen, Beispiel-Versions-IDs und einen Test-DELETE in einer Transaktion, die sofort zurückgerollt wird. Er verändert also nichts.
--age-days=0 mit Vorsicht: Ohne Altersfilter können aktive Bearbeitungen zerstört werden - jemand bearbeitet gerade eine Bestellung, und der Draft wird unter ihm weggelöscht. Der Standard von sieben Tagen ist der sichere Wert.Entweder gibt es nichts zu löschen, oder alle Kandidaten sind jünger als das Mindestalter. Der Diagnose-Endpoint zeigt, was Sache ist.
Das ist normal. Erst OPTIMIZE TABLE gibt den Platz frei.
Es fehlt ein aktiver Worker. Ohne Admin-Worker oder messenger:consume wird kein Scheduled Task ausgeführt.
Bei sehr großen Tabellen die Konsole nutzen. Die Oberfläche unterliegt dem HTTP-Timeout, das Terminal nicht.
Bei Fragen zum ersten Lauf auf einer großen Datenbank helfen wir gern - schreib uns über die Kontaktseite oder an info@stoneandwater.online.
Zwei Wege, derselbe Funktionsumfang - such dir aus, was besser zu deinem Setup passt.
Alle Preise netto zzgl. USt.
Du kaufst die Lizenz direkt bei uns und bekommst eine Rechnung von uns. Installation per Upload im Admin ohne SSH, Updates über unsere Lizenzplattform, Support direkt vom Entwickler.
Das Plugin wird im offiziellen Shopware Community Store gelistet. Installation und automatische Updates laufen dann über den Plugin Manager im Backend, die Abrechnung über deinen Shopware-Account. Sobald verfügbar, verlinken wir es hier.
Alle Funktionen auf der Produktseite. Bei Einrichtung und Cleanup-Strategie helfen wir gern.