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

SQL Oracle Discussion :

[Optim] Plan d'exécution ?


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 76
    Par défaut [Optim] Plan d'exécution ?
    Bonjour à tous,

    je suis en train de regarder des requêtes et j'ai quelques questions concernant l'optimisation de celle-ci. Pour une requête selon 2 manière de l'écrire j'ai la chose suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    COST 1247
     
    recursive calls	3752
    db block gets	0
    consistent gets	2489
    physical reads	1416
    redo size	0
    bytes sent via SQL*Net to client	2148
    bytes received via SQL*Net from client	601
    SQL*Net roundtrips to/from client	9
    sorts (memory)	39
    sorts (disk)	0
    Sur une autre écriture j'ai la chose suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    COST 1245
     
    recursive calls	3753
    db block gets	0
    consistent gets	90861
    physical reads	1415
    redo size	0
    bytes sent via SQL*Net to client	2148
    bytes received via SQL*Net from client	601
    SQL*Net roundtrips to/from client	9
    sorts (memory)	38
    sorts (disk)	0
    Les chiffres tendent à dire que la seconde version est moins optimisée, seulement le "COST" indiqué par Oracle est plus faible dans cette version... Qui dois-je croire et à quoi correspond ce Cost si ce n'est pas une indice du coût de la requête ???

    Merci par avance de vos idées.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 750
    Par défaut
    on ne peut pas t'aider sans voir la requête ni les 2 plans d'execution associés.
    le COST correspond bien au cout d'exécution de la requête par le CBO mais ça dépend des infos qu'il a en inuput c'est à dire:
    - paramètre d'initialisation du CBO
    - Statistiques objets (stats à jour? sur toutes les colonnes? histogrammes? etc.)
    - Statisqtiques système c-a-d les infos concernant le hardware

    Si ces inputs ne sont pas fiables l'output du CBO c'est à dire le plan d'execution généré ne sera pas fiable non plus.

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 76
    Par défaut
    Sachant que les paramètres du CBO sont les mêmes dans les 2 cas, que les stats sont à jour et que le hardware est le même j'ai du mal à saisir quel est l'implication au niveau des requêtes.

    simplement hors du plan d'exécution qui dans les 2 cas est différent (utilisation d'un minus au lieu d'un not exists) les consistents gets sont bien moins important dans le premier cas... Est-il donc plus souhaitable de faire confiance au coût ramené par le CBO ou au nombre de gets pour réaliser la requête ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 750
    Par défaut
    Il faut faire confiance à l'execution.
    Y'a t'il une requête qui s'execute plus rapidement que l'autre?

  5. #5
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Citation Envoyé par jenesuispasunrobot Voir le message
    ... Est-il donc plus souhaitable de faire confiance au coût ramené par le CBO ou au nombre de gets pour réaliser la requête ?
    Le côut est une estimation. Le nombre de gets est une statistique sortie de l'exécution de la requête. Donc le choix est clair.

  6. #6
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 76
    Par défaut
    Ouais je confirme, le coût est bien une estimation...

    version la plus lente (Coût 1245), exécutions avec un flush à chaque fois:

    1,7759 s
    1,5388 s
    1,2410 s
    1,1487 s

    version avec Coût à 1247:

    0,8717 s
    0,9187 s
    0,7138 s
    0,8419 s

    donc le coût n'est pas nécessairement une donnée fiable pour juger de la rapidité d'une requête !

    Merci à tous!

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 28/04/2008, 16h29
  2. Plan d'exécution pas logique
    Par pat29 dans le forum Administration
    Réponses: 6
    Dernier message: 07/03/2008, 14h37
  3. Réponses: 12
    Dernier message: 22/06/2006, 10h26
  4. Plan d' exécution
    Par rod59 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 15/06/2006, 21h50
  5. Comparer des plan d'exécution
    Par sygale dans le forum Oracle
    Réponses: 7
    Dernier message: 06/04/2006, 17h58

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