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

Administration Oracle Discussion :

Problème temps exécution update


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 93
    Par défaut Problème temps exécution update
    Bonjour,

    J'exécute la requête suivante sur deux bases ayant la même configuration mais une est en 9.2.0.6 et l'autre en 9.2.0.8 :
    Sur la base 9.2.0.8, le temps d'exécution est de 10s alors que sur la base 9.2.0.6, il est de 45 mn.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    update prevision p 
       set refcon = (select /* HINT  26 */ /*+ INDEX_DESC(H I_HISTOMVTS1) */ decode(min(refcon), max(refcon), min(refcon), NULL) 
                       from histomvts h 
                      where h.ajustement = -1 
                        and h.mvtident = p.mvtident 
                        and nvl(h.refMvtBack, 0) = nvl(p.refMvtBack, 0) 
                        and h.type = p.type 
                        and nvl(h.contrepartie, 0) = nvl(p.contrepartie, 0) 
                        and h.quantite * p.quantite >= 0 
                        and h.dateneg = p.dateneg) 
     where 1 <> -nvl(to_create, 0)
    Pour remédier au problème, je suis obligée de modifier la requête de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    update prevision p 
    set refcon = (select /* HINT 26 */ /*+ INDEX_DESC(H I_HISTOMVTS1) */ decode(min(refcon), max(refcon), min(refcon), NULL) 
    from histomvts h 
    where h.ajustement = -1 
    and h.mvtident = p.mvtident 
    and nvl(h.refMvtBack, 0) = nvl(p.refMvtBack, 0) 
    and h.type = p.type 
    and nvl(h.contrepartie, 0) = nvl(p.contrepartie, 0) 
    and h.quantite * p.quantite >= 0 
    and h.dateneg = p.dateneg) 
    where 1 <> -nvl(to_create, 0)
    Je cherche une autre solution, j'ai reconstruit les index de la table histomvts sans résultat.

    Merci

    Bonne journée

    Brigitte

  2. #2
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    Déjà pour commencer :
    - vérifie que les volumétries entre les 2 bases sont similaires sinon la comparaison n'a aucun sens
    - vérifie que les paramètres d'instance sont les mêmes sinon la comparaison n'est pas forcément judicieuse
    - rafraîchit toutes les statistiques des tables et de leurs indexes concernées par la requête
    - enlève tous les hints de ta requête
    - ensuite seulement compare les plans d'exécution, et là vraiment s'ils sont les mêmes c'est que sur ta base 9.2.0.6 il y a un problème qui ne vient pas de ta requête et il faut commencer à regarder en détail
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  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
    les plans d'exécution sont-ils les mêmes ? Et les stats ?

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 93
    Par défaut
    Les plans d'exécutions, les stats et la volumétrie sont identiques.

    Merci

    Cordialement

    Brigitte LE ROUX

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 270
    Par défaut
    Verifie aussi que tu met à jours le même nombre de lignes.
    Bien que tu ai x millions de ligne dans les 2 cas, les contenus peuvent être différents et dans un cas ta requette modifie peu de lignes et dans l'autre beaucoup.

    Peut être aussi qu'un de tes index a mal vieilli et qu'un alter index ... rebuild... s'impose.

  6. #6
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    Avec plus d'infos (plans d'exécutions par exemple) ça pourrait peut-être aider ...
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  7. #7
    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
    je ne vois même pas la différence entre les 2 requêtes

  8. #8
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    Citation Envoyé par orafrance Voir le message
    je ne vois même pas la différence entre les 2 requêtes
    juste la mise en page pour la lisibilité ?
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

Discussions similaires

  1. Problème temps d'exécution requête
    Par Mr_Coinche dans le forum Oracle
    Réponses: 6
    Dernier message: 18/11/2010, 16h29
  2. Réponses: 5
    Dernier message: 14/01/2008, 09h59
  3. Amélioration temps exécution update
    Par angebe dans le forum SQL
    Réponses: 17
    Dernier message: 14/01/2008, 08h28
  4. [Interbase 7] Problème temps d'exécution
    Par ch0upette dans le forum InterBase
    Réponses: 9
    Dernier message: 20/02/2007, 23h31
  5. Réponses: 14
    Dernier message: 10/01/2007, 10h12

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