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.