IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Forms Oracle Discussion :

[FORMS] Procédure stockée ou PLL ?


Sujet :

Forms Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2004
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 92
    Par défaut [FORMS] Procédure stockée ou PLL ?
    salut a tous ,
    je voudrais avoir quelques éclaircissements à propos des procédures fonctions pl/sql.
    Vu que les fonctions et procédures pl/sql peuvent aussi bien être ds une pll que stockés dans la base
    quel avantage j'ai de stocker les programmes dans la base ?

    Je suppose bien evidement que ça réduit le trafic réseau entre le client forms et le serveur mais j'aimerais savoir par exemple si on gagne en temps d'analyse . lorsque on crée une procédure stockée est ce que son p-code est stocké dans la base (dictionnaire) de façon que le serveur n'a pas besoin de la réanalyser ?

    si j'ai une fonction ou procédure qui est indépendante des routines forms càd que je peux bien la stocker ds la base que ds une pll sur quels critères dois-je faire mon choix ?


    [Modération : Titre initial ("avantage des programmes stockées ?") édité par LeoAnderson]

  2. #2
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Pour les avantages, tu trouveras un premier élément de réponse dans le guide pl/sql de Sheik :
    http://sheikyerbouti.developpez.com/...?page=Chap4#L4

    Après pour ce qui de savoir si je mets ma procédure dans une PLL ou si je la stocke, je me pose les questions suivantes :
    - vais-je utiliser des fonctionnalités de forms ?
    - ce code sera-t-il exécutable ailleurs que dans forms ?
    - vais-je utiliser des fonctionnalités que forms ne reconnait pas (exemple execute immediate pour forms6i) ?
    - enfin, j'aurais tendance à mettre les gros traitements dans une procédure stockée, plutôt que dans une pll...

  3. #3
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    et :
    - la version PL/SQL de forms ne me limite-t-elle pas
    - le code est-il réutilisable (en mode batch par exemple)

  4. #4
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Citation Envoyé par orafrance
    et :
    - la version PL/SQL de forms ne me limite-t-elle pas
    - le code est-il réutilisable (en mode batch par exemple)
    Ce sont les 2 et 3è points que j'ai cité
    J'accorde que le point 2 n'était pas très clair...

  5. #5
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    ha oui, j'avais pas compris ça comme ça

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2004
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 92
    Par défaut
    merci pour le lien et les réponses
    juste une dernière question : dans le lien il cite un des avantages suivants :

    'Cela permet également de tirer parti de la réutilisation des requêtes dans la base qui se trouvent dans le pool partagé de la zone SGA(System Global Area) '

    J'ai pas trop bien compris ce qu'il veut dire par la

    cela implique t-il qu'il ya pas de réutilisation de ce qu'il ya dans le cache library pour les sous-programmes applicatifs ?

  7. #7
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Par défaut
    Citation Envoyé par comment_ca
    merci pour le lien et les réponses
    juste une dernière question : dans le lien il cite un des avantages suivants :

    'Cela permet également de tirer parti de la réutilisation des requêtes dans la base qui se trouvent dans le pool partagé de la zone SGA(System Global Area) '

    J'ai pas trop bien compris ce qu'il veut dire par la

    cela implique t-il qu'il ya pas de réutilisation de ce qu'il ya dans le cache library pour les sous-programmes applicatifs ?
    la phase d'analyse est switché puisque le plan d'éxècution est déja en mémoire

  8. #8
    Membre confirmé
    Inscrit en
    Octobre 2004
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 92
    Par défaut
    voila ce ke je crois comprendre si c faux prière de me corriger :

    Lorsqu'un sous programme est executé pour la première fois à partir d'une pll(et non pas stocké) c'est le moteur pl/sql coté client qui le prend en charge (celui du client runtime).Ce moteur divise la tache en 2 parties :
    *il traite tout ce qui est instruction pl/sql lui même
    *il envoie les instructions sql au moteur sql coté serveur.ces dernières seront analysées, un pcode généré et un plan d'execution pour chaque instruction seront mis ds la zone de memoire partagée(shared pool) plus exactement ds le cache library.s'ils sont mis ds le cache c pour être réutilisés en cas de re-call non ?

    que ce soit à partir d'une pll ou à partir la base je vois pas la différence au niveau de la réutilisation des instructions sql.

    Pour moi la seule différence pour les procédures stockés c ke c le moteur pl-sql coté serveur qui les prend en charge donc il y'a moins de trafic réseau.

  9. #9
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Pour répondre à la question initiale, voici la méthode à laquelle je m'efforce de m'astreindre concernant les procédures et Forms:

    Si la proc/fonction ne concerne qu'une seule forme, je la place dans une unité de programme de la forme.
    Si elle concerne plusieurs formes, je la place dans une PLL.
    Si elle doit être également utilisée depuis d'autres points d'appel que Forms, je la place en base.

  10. #10
    Membre confirmé
    Inscrit en
    Octobre 2004
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 92
    Par défaut
    merci sheik c un peu plus clair dans ma tête en ce qui concerne ou je dois mettre une proc .
    mais j'ai posé une autre question je tiens à avoir la réponse si possible à savoir :

    etant donné que même si je n'ai pas besoin d'appeler une proc ailleurs que dans forms je peux quand même la stocker ds la base.

    est ce que j'ai un avantage en faisant ça ?(mis à part la réduction du trafic réseau)

    quelqun'un m'a dit qu'on gagne en temps d'analyse(parse) c à d que le serveur stocke le pcode(code analysé des requètes sql) de la prcédure dans la base
    est-ce que c vrai ?

  11. #11
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Oui, mais il ne faut pas tomber dans l'excès.
    Stocker une procédure en base qui n'est utilisée que pour un écran afin de gagner un quart de seconde d'exécution, ça n'a pas de sens !

    Le gain de la procédure stockée se situe également dans l'utilisation de fonctionnalités coté serveur (execute immediate, bulk collect,etc...) non disponibles coté client.

  12. #12
    Membre confirmé
    Inscrit en
    Octobre 2004
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 92
    Par défaut
    merci sheik c tout ce ke je voulais savoir

  13. #13
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Citation Envoyé par SheikYerbouti
    Stocker une procédure en base qui n'est utilisée que pour un écran afin de gagner un quart de seconde d'exécution, ça n'a pas de sens !
    Attention, cet argument est assez "dangereux".

    Imaginons, 100 utilisateurs qui lance 10 fois la procédure -> 0.25s *1000 = 4 minutes... si on extrapole encore on peut perdre pas mal de temps sur une journée au bout du compte

    Si je dis ça c'est parce que souvent j'en entends tenir le même raisonnement concernant les requêtes SQL. Gagner 10ms sur une requête c'est rien, mais si cette requête est lancée 1 millions de fois dans la journée c'est quasiment 3h de perdue au final

  14. #14
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Citation Envoyé par orafrance
    Citation Envoyé par SheikYerbouti
    Stocker une procédure en base qui n'est utilisée que pour un écran afin de gagner un quart de seconde d'exécution, ça n'a pas de sens !
    Attention, cet argument est assez "dangereux".

    Imaginons, 100 utilisateurs qui lance 10 fois la procédure -> 0.25s *1000 = 4 minutes... si on extrapole encore on peut perdre pas mal de temps sur une journée au bout du compte

    Si je dis ça c'est parce que souvent j'en entends tenir le même raisonnement concernant les requêtes SQL. Gagner 10ms sur une requête c'est rien, mais si cette requête est lancée 1 millions de fois dans la journée c'est quasiment 3h de perdue au final
    Pour l'utilisateur X, il s'agit toujours d'un quart de seconde...

  15. #15
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    certes mais attention aux traitements par batch qui peuvent faire des boucles sur ces requêtes unitaires qui ne prennent que quelques ms

  16. #16
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Par défaut
    Citation Envoyé par orafrance
    certes mais attention aux traitements par batch qui peuvent faire des boucles sur ces requêtes unitaires qui ne prennent que quelques ms
    Exactement , sous peopleSoft ( lors d'un batch ) une reqûete qui dure 3.2s a été optimisé pour gagner 1s , résultat des courses ( 1h30 heures de traitements gagnés )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [9iR2] Procédures stockées qui résident dans la bibliothèque Oracle Forms
    Par achraf_ef dans le forum Administration
    Réponses: 1
    Dernier message: 25/01/2015, 09h25
  2. Réponses: 15
    Dernier message: 18/12/2013, 15h33
  3. [2008R2] Appeler une procédure stockée depuis une application C# Windows Form.
    Par thomas1989 dans le forum Développement
    Réponses: 17
    Dernier message: 04/10/2013, 16h33
  4. [MySQL] Problème pour afficher le résultat d'une procédure stockée sous forme de table html
    Par Baleze dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/12/2012, 16h15
  5. Réponses: 1
    Dernier message: 07/02/2006, 00h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo