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 :

nested loop au lieu de hash join suite a instalation nouveau serveur


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 4
    Par défaut nested loop au lieu de hash join suite a instalation nouveau serveur
    bonjour,

    voici mon problème.

    Nous avons une base en 10G sur un vieu serveur. nous avons acheter un nouveau serveur plus puissant et aussi une nouvelle licence oracle 10G.
    Nous voulons garder l'ancien pour faire des tests ou éventuellement par la suite faire de la synchro (pour ma culture perso).

    j'ai un pb de perf sur une requête assez grosse. sur l'ancien serveur cette requete s'execute en moins de 10 sec et sur le nouveau après 5 minutes, j'ai du couper son execution.

    J'ai recalculer les stats, adapter les paramètres serveurs au dimensions du nouveau. J'ai même essayé de changer le mode de l'optimiser.

    enfin bref, si je vous consulte, c'est je suis arrivé au bou de mes idées en la matière.

    je vous fourni en pièce jointe (ZIPPE pour entrer dans les quotats )les deux explain des requêtes et le contenu de celle-ci.

    la ou je pense que c'est interressant, c'est au debut.

    Merci beaucoup

    Stéphane

    l'ancien serveur donne en explain :

    ---------------------------------------------------------------------------------------------------------------------
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
    ---------------------------------------------------------------------------------------------------------------------
    | 0 | SELECT STATEMENT | | 1 | 136 | 4726 (1)| 00:00:57 |
    | 1 | SORT ORDER BY | | 1 | 136 | 4726 (1)| 00:00:57 |
    |* 2 | HASH JOIN | | 1 | 136 | 4725 (1)| 00:00:57 |
    | 3 | VIEW | | 1 | 49 | 3151 (1)| 00:00:38 |
    | 4 | SORT ORDER BY | | 1 | 56 | 3151 (1)| 00:00:38 |


    le nouveau donne ceci :
    Plan hash value: 640089427

    --------------------------------------------------------------------------------------------------------------------
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
    --------------------------------------------------------------------------------------------------------------------
    | 0 | SELECT STATEMENT | | 1 | 279 | 2044 (3)| 00:00:25 |
    | 1 | SORT ORDER BY | | 1 | 279 | 2044 (3)| 00:00:25 |
    | 2 | NESTED LOOPS | | 1 | 279 | 2043 (3)| 00:00:25 |
    | 3 | VIEW | | 1 | 181 | 1363 (3)| 00:00:17 |
    Fichiers attachés Fichiers attachés

  2. #2
    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
    L’explain plan dit que le nouveau plan est meilleur en termes de coût: 2044 par rapport au 4726 et de temps d’exécution : 0,25 sec par rapport au 0.57.
    Qu’est-ce que ça donne une trace SQL étendue sur le serveur le plus puissant ?
    Comment les statistiques ont été calculées sur les deux serveurs ?

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    En tout cas votre requête SQL me paraît mal écrite, vous appelez trois fois la vue v_graph_charge_poste pour faire des niveaux d'aggrégats différents alors que vous pourriez le faire je pense en un seul scan avec des fonctions analytiques - je dis je pense car c'est quand même assez dense.

    Que fait la fonction f_minmax() ?
    Quel est le script derrière v_graph_charge_poste ?

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 4
    Par défaut Précision
    Alors la requête est peut être mal ecrite, mais je n'en suis pas l'auteur et en ce moment je ne me vois pas me lancer dans sa modification.

    Je ne sais même pas comment lancer une trace sur cette requête.

    je pensais plutôt a un paramétrage du serveur.

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 4
    Par défaut Précisioni 2
    la régénération des stats a été réalisée avec la console entreprise.
    pour l'ensemble des schémas.

    ce qui est bizare, c'est le nested loop c'etait un moment (pendant une journée) transformer en hash join apres suppression des stats.

  6. #6
    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 manusridolph Voir le message
    ...ce qui est bizare, c'est le nested loop c'etait un moment (pendant une journée) transformer en hash join apres suppression des stats.
    Comment l'optimiseur d'Oracle calcule le coût

  7. #7
    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 manusridolph Voir le message
    ...Je ne sais même pas comment lancer une trace sur cette requête.
    ...
    TKPROF et Explain Plan

Discussions similaires

  1. Force le hash join avec index
    Par LBO72 dans le forum Administration
    Réponses: 3
    Dernier message: 20/04/2010, 23h48
  2. dans quel cas une jointure nested loops est meilleur que hash join?
    Par M_Dandouna dans le forum Administration
    Réponses: 5
    Dernier message: 08/09/2009, 15h46
  3. Différence entre Nested LOOP et Hash Join
    Par farenheiit dans le forum Administration
    Réponses: 24
    Dernier message: 25/03/2009, 10h01
  4. Hash Semi Join VS Hash Join
    Par pacmann dans le forum SQL
    Réponses: 5
    Dernier message: 25/08/2008, 18h05
  5. HASH Join pour un OLTP en 8i
    Par Wurlitzer dans le forum Oracle
    Réponses: 3
    Dernier message: 28/04/2006, 16h29

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