sql >> Database >  >> RDS >> Oracle

Verschil tussen tabelfunctie en gepipelinede functie?

Pipelined functies, een heel klassiek voorbeeld is waar je een SELECT * FROM table name . doet in SQL*Plus . Wat er gebeurt, is dat Oracle de gegevens uit de tabel streamt.

Zoals het kijken naar een video op YouTube.

Let op het woord 'Streaming '.. En in onze functie definiëren we hoeveel rijen we streamen.. Elke gestreamd rij is onmiddellijk beschikbaar voor de beller. Pipelining betekent in termen van leken, laat me niet wachten tot je klaar bent, geef me wat je hebt, en blijf me tegelijkertijd verwerken en updaten.

In je laatste procedure, na elke rij te pipen, start je een sleep bel voor 10s , dus het record is Gestreamd elke 10 seconden naar de beller.

En een normale tabelfunctie blijft wachten totdat al het verwerkingswerk is gedaan, en dan zal het de verwijzing naar de resultaatset-cursor terugsturen.

gepijplijnde functies, waarvan ze beweren dat ze geheugen besparen, is door flushing de inhoud onmiddellijk, en daarom is de gebruikte buffer altijd minimaal, terwijl het aantal retourritten hoger wordt.




  1. 3 manieren om een ​​string te "unhexen" in MySQL

  2. Rails:Geen verbindingspool voor ActiveRecord::Base

  3. Een Postgres DB op Heroku . vernietigen

  4. Gegroepeerde rangschikking uitvoeren in MySQL