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

Oracle Discussion :

Profondeur récursive d'un curseur


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 53
    Par défaut Profondeur récursive d'un curseur
    Bonjour,

    Quelqu'un saurait-il me dire ce que signifie la profondeur récursive d'un curseur donné par l'utilitaire TKPROF :

    Merci par avance !

  2. #2
    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
    Bonjour ,
    Peux t'on avoir un extrait du rapport

    Jaouad

  3. #3
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Voic ce que j'ai trouvé sur http://www.dbspecialists.com/present...e_explain.html

    SELECT table_name
    FROM user_tables
    ORDER BY table_name

    call count cpu elapsed disk query current rows
    ------- ------ -------- ---------- ---------- ---------- ---------- ----------
    Parse 1 0.01 0.02 0 0 0 0
    Execute 1 0.00 0.00 0 0 0 0
    Fetch 14 0.59 0.99 0 33633 0 194
    ------- ------ -------- ---------- ---------- ---------- ---------- ----------
    total 16 0.60 1.01 0 33633 0 194

    Misses in library cache during parse: 1
    Optimizer goal: CHOOSE
    Parsing user id: RSCHRAG [recursive depth: 0]

    Notice the text in square brackets concerning recursive depth.
    This did not actually appear on the report : I added it for effect.
    The fact that the report did not mention recursive depth for this statement indicates that it was executed at the top level.
    In other words, the application issued this statement directly to the database server.
    When recursion is involved, the TKPROF report will indicate the depth of the recursion next to the parsing user.

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 53
    Par défaut
    Au fait, j'avais oublié de préciser la version d'Oracle : Oracle 8.1.5, au cas où...

    Voici un extrait du rapport :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    SELECT VALUE   
    FROM
     NLS_INSTANCE_PARAMETERS  WHERE PARAMETER = :b1
     
     
    call     count       cpu    elapsed       disk      query    current        rows
    ------- ------  -------- ---------- ---------- ---------- ----------  ----------
    Parse        0      0.00       0.00          0          0          0           0
    Execute  13652      0.24       0.34          0          0          0           0
    Fetch    13652      8.04       8.39          0          0          0       13652
    ------- ------  -------- ---------- ---------- ---------- ----------  ----------
    total    27304      8.28       8.73          0          0          0       13652
     
    Misses in library cache during parse: 0
    Optimizer goal: CHOOSE
    Parsing user id: 37     (recursive depth: 1)
    En fait, ma question concernait l'information recursive depth...
    Quezako ???

    Autre question subsidiaire : on voit 13652 pour le nombre de fetch pour cette requête. Ca veut dire qu'elle a été exécuté 13652 fois ???

    Merci

  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
    oui, 1 fetch/ligne

  6. #6
    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
    Je ne vais répondre qu'à la question subsidiaire :
    oui elle a été exécutée 13652 mais c'est la ligne execute qui t'indique cela

    Le fetch t'indique le nombre de lignes extraites.

    Pour plus d'informations sur le tkprof :
    http://oracle.developpez.com/guide/tuning/tkprof/

  7. #7
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    D'après mes traces de TKPROF, je dirais que le recursive depth est le niveau à partir duquel le SELECT est exécuté.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CURSOR c1 IS ...; 
    CURSOR c2 IS ...;
    BEGIN 
        FOR r1 IN C1 
        LOOP
             SELECT 2 FROM DUAL; -- Recursive Depth = 1
             FOR r2 IN C2
             LOOP
                 SELECT 1 FROM DUAL; -- Recursive Depth = 2
             END LOOP;
        END LOOP;
    END;

  8. #8
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 53
    Par défaut
    Effectivement, ça a l'air d'être ça.

    Merci beaucoup !

    Concernant la requête qui est exécutée 13652 fois (!!!), quelqu'un saurait-il pourquoi ??
    Elle n'apparaît absolument pas dans le code, donc, j'en conclu que c'est Oracle lui-même qui l'exécute pour rechercher le format de date par exemple, ou autre chose...
    Mais n'y a-t-il pas moyen qu'il garde en mémoire le résultat une bonne fois pour toute au lieu de l'exécuter autant de fois ??
    Ca nous ferait gagner 8 secondes sur le traitement...

  9. #9
    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
    Si tu as lu la documentation
    est ce que tu as vu si ce n'était pas un ordre récursif ?

  10. #10
    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
    un TO_DATE par exemple pourrait en effet exécuter cette requête à chaque ligne pour récupérer le format... du moins j'imagine que c'est pas délirant

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

Discussions similaires

  1. fonction récursive de parcours en profondeur
    Par wzzz75 dans le forum Langage
    Réponses: 1
    Dernier message: 25/03/2015, 16h00
  2. Masquer le curseur en mode MS-DOS
    Par Alex120 dans le forum C
    Réponses: 2
    Dernier message: 10/07/2002, 09h30
  3. Comment limiter les mouvements du curseur??
    Par scorpiwolf dans le forum C++Builder
    Réponses: 9
    Dernier message: 07/07/2002, 22h09
  4. Comment masquer le curseur de la souris ?
    Par benj63 dans le forum C++Builder
    Réponses: 4
    Dernier message: 26/06/2002, 18h54
  5. Position du curseur dans Edit
    Par MrJéjé dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/06/2002, 17h09

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