Anmelden

View Full Version : delete von 100 Mill. Datensätze



Seiten : 1 [2]

BenderD
05-12-15, 12:07
mit einem SQL-Zweizeiler wird es kritisch, wie schon beschrieben. Kannst Du nicht ein Statusfeld verwenden, das erst mal programmatisch gesetzt wird, z.B. von 1=Active auf 0=Inactive - das sollte in der Auftragserfassung natürlich berücksichtigt werden. Dann Löschen nach Auswahl auf diesem Statusfeld.

-h

... das ändert die Transaktionsproblematik in keiner Weise, sondern verschiebt sie bestenfalls in das setzen des Statusfeldes.

D*B

Fuerchau
05-12-15, 12:15
FRCRATIO(1) ist der absolute Tod von schnellen SQL-Lösungen.
Mit *NONE erreicht man durchaus Faktor 100 oder mehr.
Durch RAID, Cachebatterie, Notstromversorgung und sonstige Maßnahmen kann man auf FRCRATIO(1) verzichten.
Bei mir dauerte ein CHGPF mit Quelle (ein neues Feld wurde benötigt) bei FRCRATIO(1) schon 30 Minuten und hatte mal gerade 7 Mio-Sätze kopiert. Für 100Mio war also 1 Tag zu erwarten.
Das habe ich abgebrochen, einen CHGPF FRCRATIO(*NONE) und anschließend die Feldänderung. Das dauerte dann noch knapp 15 Minuten.

tt0ny
06-12-15, 22:20
Denke habe jetzt verstanden. Vielen Dank für die Antworten und Tips. Tolles Forum!

holgerscherer
07-12-15, 00:44
... das ändert die Transaktionsproblematik in keiner Weise, sondern verschiebt sie bestenfalls in das setzen des Statusfeldes.


Das Setzen des Statusfeldes kann "gemütlich" nebenher laufen, zur Not in RPG ohne Commit-Steuerung. Warum? Das Statusfeld basiert ja auf einer anderen Information. Das Lösen des Performance-Problems einer sehr großen Transaktion im laufenden Update-Betrieb wird sonst schwer, wie man hier liest.

-h

BenderD
07-12-15, 07:14
Das Setzen des Statusfeldes kann "gemütlich" nebenher laufen, zur Not in RPG ohne Commit-Steuerung. Warum? Das Statusfeld basiert ja auf einer anderen Information. Das Lösen des Performance-Problems einer sehr großen Transaktion im laufenden Update-Betrieb wird sonst schwer, wie man hier liest.

-h

Diese "andere Information" muss zwischen lesen und schreiben unverändert bleiben, mit anderen Worten: in derselben Transaktion erfolgen und ob isch einen Satz fortschreibe oder lösche, das macht in einem Programm mit Einzelsatzverarbeitung keinen signifikanten Unterschied.

D*B