wie sollten löschvorgänge in PostgreSQL batchweise erfolgen?
#1
Ich stehe gerade vor einer Entscheidung in unserem kleinen Projekt und bin mir unsicher, wie ich vorgehen soll. Wir haben eine PostgreSQL-Datenbank, in der wir immer mal wieder größere Datenmengen aus einer Tabelle löschen müssen, um Platz zu schaffen. Jetzt frage ich mich, ob es besser ist, diese Löschvorgänge regelmäßig in kleineren Batches durchzuführen oder einfach alles auf einmal zu entfernen. Bei den Batches habe ich Sorge, dass die Performance über den Tag hinweg leidet, aber ein einzelner, großer DELETE-Vorgang hat letztes Mal zu einer lästigen Sperre geführt. Vielleicht hat jemand ähnliche Erfahrungen gemacht?
Zitieren
#2
Ich denke regelmäßige kleine Löschungen machen Sinn weil der WAL Anstieg bei großen Transaktionen oft unnötig viel IO blockiert und andere Verbindungen aus dem Takt bringt.
Zitieren
#3
Aus technischer Sicht bleibt der Vorteil der Batch Variante eine geringere Sperre pro Transaktion und die Möglichkeit durch Verteilung der Last IO besser zu verteilen.
Zitieren
#4
Vielleicht ist der Plan den ganzen Tag verteilt Löschungen zu schieben gut gemeint doch was wenn die Daten weiterhin wachsen und Deadlocks passieren.
Zitieren
#5
Sollten wir das Thema vielleicht anders rahmen statt zu löschen?
Zitieren
#6
Wir könnten in einer Loop mit kleinen Löschungen arbeiten und die Transaktion so klein wie möglich halten.
Zitieren
#7
Batching klingt zwar vernünftig doch vielleicht hilft auch eine neue Idee wie Archivierung alter Datensätze oder das Nutzen von Partitionen.
Zitieren


[-]
Schnellantwort
Nachricht
Geben Sie hier Ihre Antwort zum Beitrag ein.

Bestätigung
Bitte den Code im Bild in das Feld eingeben. Dies ist nötig, um automatisierte Spambots zu stoppen.
Bestätigung
(Keine Beachtung von Groß- und Kleinschreibung)

Gehe zu: