Ich habe zwei identische Schemas, in verschiedenen Datenbanken über Datenbankverbindung verbunden.Oracle Einfügen mit FLASHBACK Query
Schema_1: Source Schema. **Rows being inserted at rapid rate.**
Schema_2: Target Schema.
Zeilen in Schema_1 (Quellschema) eingefügt zu schnellen Rate wird.
Ich bin eine SQL in Quelle Schema läuft wie folgt:
Insert into [email protected]_LINK select * from Table_1
Diese Aussage dauert einige Minuten.
Jetzt wechsle ich die Anweisung wie folgt
Insert into [email protected]_LINK select * Table_1 as of timestamp to_timestamp (to_timestamp (date));
Diese Abfrage abgeschlossen ist in wenigen Sekunden (Flashback-Abfrage verwendet wird).
Warum so großer Unterschied?
Haben Sie überprüft, wie viele Datensätze von den Abfragen zurückgegeben werden: 'Wählen Sie * aus Table_1' und' wählen Sie * Table_1 ab dem Zeitstempel to_timestamp (to_timestamp (date)); '? – kpater87
Es gibt eine Menge Unterschied mit diesen. Die Flashback-Abfrage ist die einfachste. Es wird Flashback-Daten betrachten, um die Daten aus der lokalen Datenbank zurückzugeben. Aber die Einfügung über die Verbindung muss (1) alle Daten von der Tabelle über vollständige Tabellenscan lesen (2) die Daten zu einem entfernten System über irgendein unspezifiziertes Netz transportieren (3), das in die entfernte Tabelle mit passender Transaktion geschrieben wird control/logging/redo/etc. Für mich ist es ein Kinderspiel, dass die Flashback-Abfrage schneller ist. – unleashed
Wie wirkt sich der DB-Link auf den Leistungsunterschied aus? Ist es wirklich 'to_timestamp (to_timestamp ('? Das sieht für mich falsch ... –