Mithilfe eines MV-Protokolls ( Materialized View ) kann ein MV eine schnelle Aktualisierung durchführen, bei der nur die geänderten Daten geändert werden. Verschiedene Bedingungen verhindern jedoch, dass das MV das Protokoll verwendet, und erfordern daher eine vollständige Aktualisierung. Oracle implementierte eine vollständige atomare Aktualisierung als Löschen und Einfügen jedes Datensatzes. Dies geschieht auch dann, wenn letztendlich keine Änderungen an den Daten vorgenommen wurden.
Gibt es eine Möglichkeit, diese Replikation im Hinblick auf die Redo-Generierung intelligent zu machen ? Bei einem MERGE gefolgt von einem DELETE muss die Quelle zweimal abgefragt werden. Wäre es wert, die Daten in großen Mengen zu sammeln, um eine BULK MERGE und DELETE durchzuführen? Gibt es einen besseren Weg?
Aktualisieren:
Ich habe die Verwendung einer globalen temporären Tabelle als Staging-Bereich untersucht. Obwohl sie weniger als die Hälfte des Wiederherstellens verwenden, verwenden sie immer noch zu viel.
insert
s um 60% zeigt . Dies entspricht genau den Ergebnissen, die ich sehe, und ist besser, aber nicht so gut, wie ich es gerne hätte.
append
Hinweis) sind keine idealen Bedingungen für die Reduzierung von Wiederholungen. Ich habe einige Tests durchgeführt, um zu zeigen, was ich meine. Gepostet als Antwort, weil sie nicht in einen Kommentar passen
insert
Ops erzeugen viel weniger Rückgängig alsdelete
oderupdate
Ops (fast keine in der Tat). Mehrere GTTS zu haben, um teure Operationen zu vermeiden, könnte ein guter Ansatz sein