Wie oft muss ich mich in Oracle engagieren?

Ich lösche eine große Menge an data aus einer großen Oracle-database. Der process, den ich verfolgt habe, ist, dass ich eine datasatztabelle A lösche, die CASCADE delete in Tabelle B verursacht, die CASCADE delete in einer anderen Tabelle hat. Also im Grunde gibt es mehrere Tabellen, die mit CASCADE delete miteinander verwandt sind.

Gegenwärtig arbeitet dieser process in Iteration für eine Anzahl von datasätzen in Tabelle A und I nur COMMIT am Ende der Iteration (wenn alle data gelöscht sind). Der Vorgang dauert ungefähr 30 Stunden.

Ich wurde vorgeschlagen, reguläres COMMIT zu haben, dh ein COMMIT für jede Löschung eines datasatzes für Tabelle A (einschließlich des Löschens bei allen nachfolgenden datasätzen in untergeordneten Tabellen).

Ich weiß, dass reguläres Commit die Größe des Undo-Logs niedrig hält, aber gibt es eine performancesverbesserung bei regelmäßigen Commits? Würde ich eine Verbesserung der time sehen, die für die Fertigstellung des Skripts benötigt wird?

Solutions Collecting From Web of "Wie oft muss ich mich in Oracle engagieren?"

Es wird nicht erwartet, dass häufige Commits die performance Ihres Codes verbessern. Eine große Anzahl von vorläufigen Commits kann Ihren Code verlangsamen, da Sie mehr time für die Synchronisierung benötigen. Und wenn Sie in der Mitte festlegen, müssen Sie wahrscheinlich ziemlich viel Code schreiben, um sicherzustellen, dass Ihr Code vollständig neu gestartet werden kann.

Haben Sie einen AWR- oder Statspack-Snapshot oder eine Trace-file, die anzeigt, auf was Sie eigentlich warten? 30 Stunden, um etwas zu tun, scheint unvernünftig. Das würde mich zu dem starken Verdacht führen, dass Ihnen einige Indizes fehlen, die dazu führen, dass Ihre kaskadierten Löschvorgänge bei jedem Löschen einer Zeile vollständige Table-Scans durchführen. Das Reparieren der fehlenden Indizes oder das Löschen mehrzeiliger Zeilen, so dass weniger vollständige Tabellenscans weniger häufig durchgeführt werden müssen, erhöht die Wahrscheinlichkeit, die performance zu verbessern, als wenn Sie sich Gedanken darüber machen, wann Änderungen festgeschrieben werden.