Zum Inhalt springen
Proaktive Sicherheitsupdates
Wartung

Datenbank-Wartung und -Optimierung für Online-Shops

Datenbank-Wartung für Online-Shops: Index-Optimierung, Slow Queries beheben, Cleanup, Backups und Wachstums-Monitoring für schnelle, stabile Online-Shops.

15 Min. Lesezeit DatenbankPerformanceIndex-OptimierungSlow QueriesBackups

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.

Datenbank-Dashboard: Tabellen, Slow Queries, Index-HealthShop-DBGröße 4,8 GB - 142 Tabellen - 38 Indizes - Status: optimiertOKGrößte Tabellen (Speicherverbrauch)cart1,9 GBlog_entry0,9 GBversion_commit0,6 GBproduct0,4 GBenqueue0,3 GBCleanup-Potenzial: cart + log_entry = 2,1 GBSlow-Query-Log (langsamste Abfragen)SELECT order JOIN customer WHERE3,2 sSELECT cart WHERE token LIKE1,8 sSELECT product ORDER BY listing1,1 sSELECT category tree path0,7 slong_query_time = 1 s - ohne Index = Full Table Scan4 Kandidaten für neue Indizes erkanntQuery-Zeit vorher vs. nachher (nach Index-Optimierung)Vorher: Full Table Scan3,2 sNachher: Index Seek0,02 sbis 160xIndex-HealthFehlende + ungenutzte IndizesCleanupAlte Carts, Logs, VersionsdatenBackup-CheckDump-Größe + Restore-TestMedian-Seite wächst 8,4 Prozent pro Jahr auf 2,6 MB (HTTP Archive 2025) - Datenbanken wachsen mit

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

Eine schnelle Datenbank ist die Voraussetzung für schnelle Seiten -- und schnelle Seiten sind die Voraussetzung für Conversions. Die Datenbank-Wartung ist damit keine reine Technik-Aufgabe, sondern ein direkter Hebel auf Umsatz und Kundenzufriedenheit.

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

Mehr Indizes bedeuten nicht automatisch mehr Tempo. Ein gut gewählter Index auf die richtigen Spalten beschleunigt gezielte Abfragen erheblich, während wahllos angelegte Indizes vor allem Schreiboperationen ausbremsen und Speicher verbrauchen. Entscheidend ist die Analyse der tatsächlich genutzten Abfragen -- nicht das Anlegen möglichst vieler Indizes.

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).

my.cnf (Slow-Query-Log aktivieren)
[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 = OFF

Das 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 / DatenartTypisches ProblemCleanup-Ansatz
Warenkörbe (cart)Eine der größten Tabellen, wächst mit jedem BesuchVeraltete Carts indexgestützt und regelmäßig löschen
Log-EinträgeWachsen unbegrenzt ohne AufräumenAufbewahrungsdauer definieren, ältere Einträge entfernen
VersionsdatenSammeln sich bei jeder Datenänderung anGeplante Bereinigung alter Versionsstände
Warteschlangen (enqueue)Abgearbeitete Nachrichten bleiben liegenErledigte Einträge nach definierter Frist entfernen
Suchindizes / CacheVeraltete Einträge verfälschen ErgebnisseRegelmäßiger Rebuild und Bereinigung
Gast-SessionsSammeln sich ungenutzt anAbgelaufene 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

Viele Shops sichern zwar regelmäßig, testen die Wiederherstellung aber nie. Im Ernstfall stellt sich dann heraus, dass das Backup unvollständig ist, ein Tabellenschema fehlt oder der Restore Stunden dauert. Erst der dokumentierte, regelmäßig wiederholte Restore-Test macht aus einer Sicherung eine belastbare Absicherung.

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.

Grundsatz der proaktiven Datenbank-Wartung

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.

Dieser Artikel basiert auf Daten aus: HTTP Archive Web Almanac (2025), Google / Think with Google, Akamai, Portent (2019), Percona, MySQL-Dokumentation, MariaDB-Dokumentation, Shopware Store und Shopware Developer Dokumentation, Bitkom Wirtschaftsschutz (2025) sowie Handelsverband Deutschland (HDE). Projekterfahrungen aus der Datenbank-Wartung von Online-Shops. Die genannten Zahlen können je nach Shop-System, Datenmenge und Konfiguration variieren.