Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Unterschied zwischen Tabellenfunktion und Pipeline-Funktion?

Pipelined Funktionen, ein sehr klassisches Beispiel ist ein SELECT * FROM table name in SQL*Plus . Was passiert, ist, dass Oracle die Daten aus der Tabelle streamt..

Als würde man sich ein Video auf YouTube ansehen.

Bitte beachten Sie das Wort "Streaming". '.. Und in unserer Funktion definieren wir, wie viele Zeilen wir streamen.. Alle gestreamt Zeile steht dem Anrufer sofort zur Verfügung. Pipelining bedeutet in Laiensprache, lass mich nicht warten, bis du fertig bist, gib mir, was immer du hast, und verarbeite und aktualisiere mich gleichzeitig weiter.

In Ihrem letzten Verfahren leiten Sie nach dem Piping jeder Zeile einen sleep ein Aufruf für 10s , der Datensatz wird also gestreamt alle 10s an den Anrufer.

Und eine normale Tabellenfunktion wartet, bis die gesamte Verarbeitungsarbeit abgeschlossen ist, und gibt dann die Referenz an den Cursor der Ergebnismenge zurück.

Pipeline-Funktionen , die angeblich Speicher sparen, werden durch flushing ausgeführt der Inhalt sofort, und daher ist der verwendete Puffer immer minimal, während die Anzahl der Roundtrips höher wird.