Wichtig
Detail
Wichtig
Detail
Wenn mehrere Objekte des selben Typs gelöscht werden (also Objekte die in derselben Datenbank-Tabelle) stehen, so wird für die Datenbank ein Batch erstellt und für jedes Element das Kommando "Aktualisiere Zeile wo die ID XXX ist und REV.MAX=unendlich" hinzugefügt.
Das ist bei Oracle anscheind extrem inperformant.
Löschen von 15000 Elementen (also 15000 Zeilen zu aktualisieren) dauert ca 40s; wenn in der Tabelle noch zusätzliche Elemente stehen die nicht angefasst werden, wird dies um ein Vielfaches langsamer (bei ca 90000 Zeilen dauert die Aktualisierung von 15000 Zeilen ca. 1m50s). (gemessen auf einer lokalen Oracle12 im Docker)
Verbesserung
Anstatt für jedes Element ein Batch hinzuzufügen wird eine Bulk-Query abgesetzt: "Aktualisiere die Zeilen wo REV_MAX=unendlich ist und die ID in der Menge {X1,X2,X3,...}"
Hiermit dauert das Aktualisieren von 15000 Elementen bei einer Gesamtzeilenanzahl von 90000 ca. 1s.
Test
Kein Test. Alles muss weiterhin funktionieren.