Die Datenbank ist das Herzstück jedes Online-Shops -- jeder Produktaufruf, jede Suche und jeder Checkout löst Abfragen aus. Wächst der Shop, wächst auch die Datenbank: Die Median-Webseite legt jedes Jahr um 8,4 Prozent auf 2,6 MB zu (HTTP Archive, 2025), und im Hintergrund vervielfachen sich Bestelldaten, Warenkörbe und Logs. Ohne regelmäßige Wartung führt das zu langsamen Abfragen, längeren Ladezeiten und einem höheren Ausfallrisiko. Dabei reagieren Kunden empfindlich: 53 Prozent der mobilen Nutzer verlassen eine Seite, wenn sie länger als drei Sekunden lädt (Google). Dieser Artikel zeigt, wie professionelle Datenbank-Wartung -- Index-Optimierung, Slow-Query-Analyse, Cleanup, Backups und Wachstums-Monitoring -- Ihren Shop dauerhaft schnell und stabil hält.
Warum die Datenbank über die Shop-Performance entscheidet
Jede dynamische Seite eines Online-Shops entsteht aus Datenbankabfragen. Die Startseite lädt Kategorien, Aktionen und Bestseller, eine Produktseite holt Stammdaten, Varianten, Preise und Bewertungen, der Checkout aggregiert Warenkorb, Versandregeln und Steuersätze. Ist die Datenbank langsam, ist die gesamte Seite langsam -- unabhängig davon, wie gut Frontend und Caching optimiert sind. Die Geschwindigkeit hat direkte Geschäftsauswirkungen: Eine Verzögerung von nur einer Sekunde kann die Conversion-Rate um 7 Prozent senken (Akamai). Pro zusätzlicher Sekunde Ladezeit zwischen 0 und 5 Sekunden sinkt die Conversion-Rate im Schnitt um 4,42 Prozent (Portent, 2019).
Das Problem verschärft sich mit dem Wachstum. Eine Abfrage, die bei 10.000 Bestellungen in Millisekunden antwortet, kann bei 500.000 Bestellungen mehrere Sekunden brauchen -- besonders wenn sie ohne passenden Index über die gesamte Tabelle laufen muss. Der deutsche Online-Handel wuchs 2025 um 3,9 Prozent auf 92,3 Milliarden Euro (HDE), und erfolgreiche Shops sammeln mit jedem Jahr mehr Daten an. Genau hier setzt die proaktive Wartung an: Sie hält die Antwortzeiten konstant niedrig, auch wenn der Datenbestand wächst. Ohne sie verschlechtert sich die Performance schleichend -- oft unbemerkt, bis es im Weihnachtsgeschäft zum Engpass kommt.
Der Kern in einem Satz
Index-Optimierung: der größte Hebel für schnelle Abfragen
Indizes sind der wirksamste Hebel für die Abfrage-Performance. Ohne einen passenden Index muss die Datenbank für eine Suche die gesamte Tabelle durchlaufen -- den sogenannten Full Table Scan. Mit einem Index springt sie über eine B-Baum-Struktur direkt zu den relevanten Zeilen (MySQL-Dokumentation). Der Unterschied ist dramatisch: In einem dokumentierten Beispiel mit einer Tabelle von 13 Millionen Zeilen sank der Abfrage-Aufwand durch einen Index von rund 1.205.103 auf etwa 2.151 -- eine Verbesserung um den Faktor 560 (Percona). Bei großen Bestell- oder Produkttabellen entscheidet ein einziger fehlender Index oft über Millisekunden oder mehrere Sekunden Antwortzeit.
Die Kunst liegt im richtigen Maß. Indizes beschleunigen Lesezugriffe, verlangsamen aber Schreibzugriffe und belegen Speicher (MariaDB-Dokumentation) -- jeder Index muss bei jedem INSERT, UPDATE und DELETE mitgepflegt werden. Über-Indizierung ist daher ein realer Kostenfaktor. Eine professionelle Index-Optimierung analysiert deshalb beides: fehlende Indizes auf Spalten, nach denen häufig gefiltert, sortiert oder verknüpft wird, und ungenutzte Indizes, die nur Schreiblast und Speicher kosten, ohne je eine Abfrage zu beschleunigen. Bei zusammengesetzten (Composite-)Indizes ist zusätzlich die Spaltenreihenfolge entscheidend, denn die Datenbank nutzt nur die führenden Spalten der Index-Definition.
Indizes sind kein Selbstläufer
Slow Queries finden und gezielt beheben
Bevor optimiert werden kann, müssen die langsamen Abfragen sichtbar gemacht werden. Das wichtigste Werkzeug dafür ist das Slow Query Log. In MariaDB und MySQL wird es über slow_query_log = ON aktiviert; mit long_query_time = 1 werden alle Abfragen protokolliert, die länger als eine Sekunde dauern (MariaDB-Dokumentation). Besonders aufschlussreich ist die Option log_queries_not_using_indexes, die gezielt Abfragen erfasst, die ohne Index laufen -- denn genau diese lassen sich meist durch einen neuen Index oder eine Umformulierung beheben (MariaDB-Dokumentation).
[mariadbd]
slow_query_log = ON
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
log_queries_not_using_indexes = ON
log_slow_admin_statements = OFFDas reine Logfile ist nur der Anfang. Werkzeuge wie mysqldumpslow oder pt-query-digest fassen die Einträge zusammen und zeigen, welche Abfragen am längsten dauern und wie oft sie ausgeführt werden (MariaDB-Dokumentation). Diese Kombination aus Dauer und Häufigkeit ist entscheidend: Eine Abfrage, die 0,8 Sekunden dauert, aber bei jedem Seitenaufruf ausgeführt wird, hat einen größeren Gesamteinfluss als eine, die zwei Sekunden braucht, aber nur einmal pro Stunde läuft. Im Datenbank-Audit priorisieren wir deshalb nach Gesamtlast -- und beheben zuerst die Abfragen mit dem größten Hebel, statt blind alle langsamen Queries zu optimieren.
Slow-Query-Analyse
Aktivierung des Slow Query Logs und Auswertung nach Dauer mal Häufigkeit -- die Abfragen mit der größten Gesamtlast werden zuerst behandelt.
Index-Optimierung
Fehlende Indizes ergänzen, ungenutzte entfernen, Composite-Indizes mit korrekter Spaltenreihenfolge anlegen -- gezielt statt wahllos.
Daten-Cleanup
Alte Warenkörbe, Logs und Versionsdaten regelmäßig entfernen, damit die größten Tabellen nicht ungebremst wachsen.
Query-Optimierung
Langsame Abfragen umformulieren, EXPLAIN-Pläne prüfen und unnötige JOINs oder Subqueries auflösen, wo ein Index nicht reicht.
Backup und Restore-Test
Regelmäßige Datenbank-Dumps, geprüfte Wiederherstellbarkeit und dokumentierte Recovery-Zeiten statt Backups auf gut Glück.
Wachstums-Monitoring
Tabellengrößen, Query-Zeiten und Datenwachstum laufend beobachten, um Engpässe zu erkennen, bevor sie zum Problem werden.
Datenballast: warum Shop-Tabellen unkontrolliert wachsen
Ein großer Teil der Datenbank-Belastung entsteht nicht durch produktive Daten, sondern durch Ballast. In Shopware ist die Warenkorb-Tabelle (cart) typischerweise eine der größten Tabellen der gesamten Datenbank (Shopware Store), weil jeder Besucher -- auch ohne Kaufabsicht -- einen Warenkorb-Eintrag erzeugt. Hinzu kommen Log-Einträge, Versionsdaten (version_commit, version_commit_data) und Warteschlangen-Tabellen (enqueue), die ohne regelmäßige Bereinigung kontinuierlich anwachsen. Shopware stellt dafür geplante Aufgaben bereit, die überflüssige und veraltete Daten täglich automatisch löschen und so Speicher freigeben (Shopware Store).
Wie kritisch das ist, zeigt ein Detail aus der Shopware-Entwicklung selbst: Das ursprüngliche SQL zum Löschen veralteter Warenkorb-Einträge nutzte keine Datenbank-Indizes, was bei Shops mit hohem Traffic zu Abfragezeiten von über 30 Sekunden führte (Shopware Developer). Solche Lösch-Operationen können den gesamten Shop ausbremsen, wenn sie zur falschen Zeit laufen. Ein durchdachtes Cleanup-Konzept entfernt Ballast deshalb regelmäßig in kleinen, indexgestützten Schritten -- statt selten in großen Blöcken, die Sperren auslösen und die Datenbank blockieren. Das Ergebnis: kleinere Tabellen, schnellere Abfragen und ein geringerer Speicherbedarf.
| Tabelle / Datenart | Typisches Problem | Cleanup-Ansatz |
|---|---|---|
| Warenkörbe (cart) | Eine der größten Tabellen, wächst mit jedem Besuch | Veraltete Carts indexgestützt und regelmäßig löschen |
| Log-Einträge | Wachsen unbegrenzt ohne Aufräumen | Aufbewahrungsdauer definieren, ältere Einträge entfernen |
| Versionsdaten | Sammeln sich bei jeder Datenänderung an | Geplante Bereinigung alter Versionsstände |
| Warteschlangen (enqueue) | Abgearbeitete Nachrichten bleiben liegen | Erledigte Einträge nach definierter Frist entfernen |
| Suchindizes / Cache | Veraltete Einträge verfälschen Ergebnisse | Regelmäßiger Rebuild und Bereinigung |
| Gast-Sessions | Sammeln sich ungenutzt an | Abgelaufene Sessions automatisch entfernen |
Backups: nur ein getestetes Backup ist ein Backup
Datenbank-Wartung umfasst immer auch die Datensicherung. Die Datenbank enthält die wertvollsten Daten eines Shops -- Bestellungen, Kunden, Rechnungen -- und ihr Verlust kann existenzbedrohend sein. Die Bitkom-Studie 'Wirtschaftsschutz 2025' zeigt, dass 87 Prozent der deutschen Unternehmen in den vergangenen zwölf Monaten von Datendiebstahl, Spionage oder Sabotage betroffen waren; der Gesamtschaden für die deutsche Wirtschaft lag bei 289,2 Milliarden Euro (Bitkom, 2025). Ein verlässliches Backup ist die letzte Verteidigungslinie -- gegen Hardware-Ausfälle, fehlerhafte Updates, Angriffe und versehentliches Löschen gleichermaßen.
Entscheidend ist nicht das Anlegen, sondern die Wiederherstellbarkeit. Ein Backup, das nie getestet wurde, ist kein Backup, sondern eine Hoffnung. Zur Datenbank-Wartung gehört deshalb der regelmäßige Restore-Test: Die Sicherung wird in einer isolierten Umgebung tatsächlich eingespielt, auf Vollständigkeit geprüft und die Wiederherstellungszeit dokumentiert. Bewährt hat sich die 3-2-1-Regel: drei Kopien der Daten, auf zwei verschiedenen Medientypen, davon eine an einem anderen Ort (Bitkom). Bei Datenbanken kommen zwei Verfahren zusammen: regelmäßige vollständige Dumps und, für minimalen Datenverlust, Point-in-Time-Recovery über die Binärlogs. Mehr dazu in unserem Beitrag zu PHP-Lebenszyklus und sicheren Upgrades, in dem auch der sichere Umgang mit Datenbank-Migrationen eine Rolle spielt.
Der häufigste Backup-Fehler
Wachstums-Monitoring: Engpässe erkennen, bevor sie auffallen
Datenbank-Wartung ist kein einmaliges Projekt, sondern ein fortlaufender Prozess. Ein Shop, der heute schnell ist, kann in einem Jahr deutlich langsamer sein -- nicht durch eine plötzliche Änderung, sondern durch stetiges Datenwachstum. Deshalb gehört zur Wartung ein kontinuierliches Monitoring der entscheidenden Kennzahlen: Größe der einzelnen Tabellen, durchschnittliche und maximale Query-Zeiten, Anzahl der Slow Queries pro Tag, Puffernutzung und das Verhältnis von Lese- zu Schreibzugriffen. Diese Werte werden über die Zeit beobachtet, sodass Trends sichtbar werden, bevor sie sich auf die Nutzer auswirken.
Der Vorteil liegt in der Vorhersagbarkeit. Wenn die cart-Tabelle Monat für Monat um ein festes Maß wächst, lässt sich abschätzen, wann ein Cleanup-Intervall verkürzt oder ein Index angepasst werden muss -- lange bevor Kunden eine Verlangsamung bemerken. Wächst die durchschnittliche Query-Zeit langsam an, ist das ein Frühwarnsignal für eine fehlende Index-Anpassung. Dieses datenbasierte Vorgehen verwandelt die Datenbank-Wartung von reaktivem Feuerlöschen in proaktive Vorsorge. Ergänzend dazu sollte die gesamte Server-Ebene abgesichert sein -- wie das gelingt, beschreibt unser Beitrag zur Server-Härtung für Shops, der PHP, Webserver und Datenbankzugriff gemeinsam betrachtet.
- Tabellengrößen monatlich erfassen und Wachstumstrend dokumentieren
- Durchschnittliche und maximale Query-Zeiten kontinuierlich beobachten
- Anzahl der Slow Queries pro Tag als Frühwarn-Kennzahl tracken
- Puffernutzung und Cache-Trefferquote der Datenbank überwachen
- Backup-Größe und letzte erfolgreiche Wiederherstellung protokollieren
- Schwellenwerte definieren, ab denen Cleanup oder Index-Anpassung ausgelöst wird
Der strukturierte Wartungs-Zyklus für Shop-Datenbanken
Wirksame Datenbank-Wartung folgt einem wiederkehrenden Zyklus statt punktueller Eingriffe. Am Anfang steht eine Bestandsaufnahme: Wie groß ist die Datenbank, welche Tabellen dominieren, wie sehen die Slow-Query-Statistiken aus und welche Indizes existieren bereits? Aus dieser Analyse entsteht ein priorisierter Maßnahmenplan. Anschließend werden Optimierungen umgesetzt -- jede zuerst in einer Staging-Umgebung getestet, denn eine geänderte Index-Struktur oder ein großes Cleanup kann in seltenen Fällen unerwartete Nebenwirkungen haben. Erst nach erfolgreichem Test erfolgt die Übertragung auf das Live-System, begleitet von Monitoring.
Danach beginnt der Zyklus von vorne: Die Wirkung der Maßnahmen wird gemessen, die Kennzahlen werden mit der Ausgangslage verglichen, und neue Engpässe werden identifiziert. Dieser kontinuierliche Ansatz unterscheidet die professionelle kontinuierliches Monitoring der Datenbank von einer einmaligen Optimierung, die nach wenigen Monaten verpufft. Wir empfehlen einen vollständigen Datenbank-Audit mindestens einmal pro Quartal sowie ein laufendes Monitoring im Rahmen der regelmäßigen Wartung. Nach größeren Änderungen -- einem Relaunch, neuen Funktionen oder einem Versionssprung des Shop-Systems -- ist ein zusätzlicher Audit sinnvoll, weil sich Abfragemuster und Datenmengen dann häufig deutlich verändern.
Eine gut gewartete Datenbank merkt man nicht -- sie liefert konstant schnelle Antworten, während der Shop wächst. Bemerkbar wird erst ihre Vernachlässigung, meist im ungünstigsten Moment.
Der wirtschaftliche Nutzen ist messbar. Schnellere Abfragen bedeuten schnellere Seiten, und schnellere Seiten bedeuten mehr Conversions und zufriedenere Kunden -- bei einer einzigen Sekunde Verzögerung stehen bereits 7 Prozent der Conversions auf dem Spiel (Akamai). Gleichzeitig senkt eine schlanke, gut indizierte Datenbank den Serverbedarf, weil dieselbe Hardware mehr Anfragen verarbeiten kann. Und ein getestetes Backup-Konzept reduziert das Risiko teurer Ausfälle in einem Umfeld, in dem 87 Prozent der Unternehmen von Sicherheitsvorfällen betroffen sind (Bitkom, 2025). Die kontinuierliche Datenbank-Wartung zahlt sich damit auf drei Ebenen aus: Geschwindigkeit, Kosten und Ausfallsicherheit.