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 :

Optimisation de requête avec Tkprof


Sujet :

Oracle

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Optimisation de requête avec Tkprof
    Bonjour,

    j'ai fait une procédure stockée et afin d'optimiser ce traitement j'ai mis une trace SQL que j'ai analysé avec Tkprof.
    Hors il y a un résultat concernant une requete qui me semble bizarre :

    SELECT INST_PROD_ID
    FROM PS_RF_INST_PROD
    WHERE SETID = :b3
    AND BO_ID_CUST = :b2
    AND PRODUCT_ID = :b1
    AND INST_PROD_STATUS = 'INS'

    call count cpu elapsed disk query current rows
    ------- ------ -------- ---------- ---------- ---------- ---------- ----------
    Parse 1 0.00 0.00 0 0 0 0
    Execute 1500000 61.40 70.10 0 0 0 0
    Fetch 1500000 18171.59 5852.31 0 3188798241 0 1390000
    ------- ------ -------- ---------- ---------- ---------- ---------- ----------
    total 3000001 18233.00 5922.41 0 3188798241 0 1390000

    Misses in library cache during parse: 0
    Optimizer goal: CHOOSE
    Parsing user id: 48 (D32RSBX) (recursive depth: 1)

    Rows Execution Plan
    ------- ---------------------------------------------------
    0 SELECT STATEMENT GOAL: CHOOSE
    0 TABLE ACCESS (BY INDEX ROWID) OF 'PS_RF_INST_PROD'
    0 INDEX (RANGE SCAN) OF 'PS2RF_INST_PROD' (NON-UNIQUE)


    Elapsed times include waiting on following events:
    Event waited on Times Max. Wait Total Waited
    ---------------------------------------- Waited ---------- ------------
    latch free 8 0.18 0.40

    Ca semble correct car il ya un seul parse et le plan d'execution utilise bien un index.
    Mais Pourquoi le elapsed est inférieur au CPU au niveau du fetch?
    Ce n'est pas du tout logique. Je tiens a préciser que l'index utilisé 'PS2RF_INST_PROD' n'est pas discriminant car les analyses (statistiques) sur les tables n'ont pas été effectuées.
    Néanmoins l'elapsed ne devrait il pas etre superieur au CPU

    De plus question annexe:
    A la fin du Tkprof il y a la le temps qu'a durée la procédure, et ca me donne dans les 19000 secondes (avec les temps d'attente), or la procédure à réellement durée 31181 sec. Pourquoi cette différence dans la durée?
    Y a t'il des temps qui ne sont pas comptabilisés

    Merci par avance pour vos réponses

  2. #2
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 97
    Points : 110
    Points
    110
    Par défaut
    Les statistiques temporelles enregistrees par le noyau oracle sont sujettes a des "effets de bord" et des erreurs parfois systematiques pouvant entrainer les incoherences que tu observes.
    Ici ca parait amplifie car la requete est executee un grand nombre de fois mais pour un seul Fetch, en gros ca veut dire que cpu et elpased sont equivalents...
    Pour des requetes longues, ces effets deviennet vites negligeables.

  3. #3
    Expert éminent sénior
    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
    Points : 11 862
    Points
    11 862
    Par défaut
    Pour tracer une procédure, vous pouvez également utiliser l'outil : profiler
    http://oracle.developpez.com/faq/?page=12#profiler
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Ok,
    merci pour vos réponses.

Discussions similaires

  1. Optimiser ma requète avec like
    Par vb dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 06/11/2008, 15h45
  2. Optimiser la requête avec un plan d'exécution
    Par irnbru dans le forum Développement
    Réponses: 1
    Dernier message: 20/08/2008, 00h07
  3. optimisation de requête avec plusieurs union
    Par Smix007 dans le forum SQL
    Réponses: 11
    Dernier message: 02/04/2008, 16h59
  4. Optimisation de requête avec jointure textuelle
    Par spirou33 dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 26/10/2007, 09h36
  5. [CF][C#] Comment optimiser mes requêtes avec SqlCE ?
    Par david71 dans le forum Windows Mobile
    Réponses: 10
    Dernier message: 20/01/2006, 14h48

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