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 :

Plans d'exécution différents sur 2 schémas identiques


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Par défaut Plans d'exécution différents sur 2 schémas identiques
    Bonjour,

    J ai 2 vues qui sont identiques sur ma base de dev1 et ma base de dev2.
    Meme indexes sur les tables associees etc...

    Quand j execute mon SELECT sur la vue, ben les plans d executions sont totalement differents.
    dev1: cost de 200
    dev2: cost de 1 350 000

    J ai du rajouter des hints sur dev2 pour obtenir un plan d executions semblable au comportement de dev1. Ouf!

    Pourquoi ce comportement ?
    Comment reduire les risques d avoir des plans d executions differents sur mes environnement ? je ne souhaites pas avoir de nouveau ce genre de surprise lors que la requete sera execute sur un nouvel environnement.

    Merci d avance a tous pour la reponse

  2. #2
    Membre émérite Avatar de philcero
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 528
    Par défaut
    Afin d'avoir le même comportement entre deux schémas il te faut :

    1. Les mêmes objets (tables, définition des colonnes des tables, indexs).
    2. Les mêmes contenus.
    3. Avoir lancé le calcul des statistiques sur tous les objets impactés.
    4. Avoir le même noyau oracle (Version suffira).

    Généralement ce genre de comportement provient du fait que les statistiques ne sont pas les mêmes entre les deux bases et comme l'optimizer s'appuie dessus...

  3. #3
    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
    Et aussi peut-être avoir les même paramètres d'instance pour les paramètres liés à l'optimiseur
    Normalement dans la majorité des cas avec des stats à jour et des indexes bien chosisis (si besoin d'indexes), les hints ne sont pas utiles
    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/

  4. #4
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Par défaut
    en gros, si la volumetrie des tables impactees est differente entre mes environnements mais que les objets sont identiques, il se peut quand meme alors que les plan d execution different ?

    Ca me parait quand meme impressionant d avoir un tel ecart entre mes costs

  5. #5
    Membre émérite Avatar de philcero
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 528
    Par défaut
    Tout à fait, l'optimizer va faire des approches statistiques sur tes objets afin de voir quel chemin va aller plus vite.

    Si les volumétries sont différentes il est fort possible que la répartition logique des liens entre tes tables change considérablement de forme d'où un plan totalement différent.

    Si ton problème t'impose d'avoir les même plans d'exécution tu peux calculer tes stats sur la base primaire, les exporter et les importer dans la secondaire et là l'optimizer n'y verra que du feu.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Par défaut
    Ouais, ca me parait une bonne idee !

    Pour ma part j essayais de hint la requete sur mon 2eme environnement pour forcer d avoir le meme plan d execution que ma base primaire.. C etait ptete pas un bon choix

Discussions similaires

  1. [10g] Plan d'exécution différent IN ou NOT IN
    Par ldiaz dans le forum SQL
    Réponses: 44
    Dernier message: 23/04/2013, 09h40
  2. Réponses: 10
    Dernier message: 10/07/2012, 20h47
  3. Plans d'exécutions différents suivant la source
    Par jmerigea dans le forum Administration
    Réponses: 11
    Dernier message: 10/07/2009, 21h41
  4. Réponses: 12
    Dernier message: 22/06/2006, 10h26
  5. [MySQL] Résultat de requête différent sur 2 serveurs identiques
    Par schlitters dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 17/12/2005, 00h24

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