Oracle
 sql >> Base de données >  >> RDS >> Oracle

Différence entre la fonction de table et la fonction en pipeline ?

Pipelined fonctions, un exemple très classique est celui où vous faites un SELECT * FROM table name en SQL*Plus . Ce qui se passe, c'est qu'Oracle diffuse les données de la table.

Comme regarder une vidéo sur YouTube.

Veuillez noter le mot "Streaming '.. Et dans notre fonction, nous définissons le nombre de lignes que nous diffusons.. Chaque diffusé ligne est immédiatement disponible pour l'appelant. Pipelining signifie en termes simples, ne me faites pas attendre que vous ayez terminé, donnez-moi tout ce que vous avez, et continuez à me traiter et à me mettre à jour simultanément.

Dans votre dernière procédure, après avoir canalisé chaque ligne, vous lancez un sleep appeler pendant 10s , donc l'enregistrement est diffusé à l'appelant toutes les 10s.

Et, une fonction de table normale attendra jusqu'à ce que tout le travail de traitement soit terminé, puis elle renverra la référence au curseur de l'ensemble de résultats.

les fonctions en pipeline , elles prétendent économiser de la mémoire, se font par flushing le contenu immédiatement, et donc la mémoire tampon utilisée est toujours minimale, alors que le nombre d'allers-retours augmente.