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 :

[OPTIMIZER] : différences entre 2 instances identiques


Sujet :

Administration Oracle

  1. #1
    Membre averti
    Inscrit en
    Novembre 2002
    Messages
    549
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 549
    Points : 436
    Points
    436
    Par défaut [OPTIMIZER] : différences entre 2 instances identiques
    Bonjour à tous

    RDBMS 8.1.7.4.0

    Soit une première instance de pré-production, rafraichie à partie des datas de la production à un moment t

    Soit une seconde instance de production, même release que la première
    Statistiques rafraichies tous les soirs sur l'instance de prod

    Chaque instance est sur un serveur dédié

    OPTIMIZER_MODE=CHOOSE sur les 2 instances
    Autres paramétres quasiment identiques

    Nous observons des différentes de temps de réponses assez importantes sur toutes les requetes exécutées sur la prod, ce qui nous inquiéte particulièrement.
    Les couts sont sur certaines requetes sont 10 * plus importants que sur la pré-prod;

    Nombre de sessions simultanées sur la pré-prod : 50
    Nombre de sessions simultanées sur la prod : pic à 200 dans la journée
    Les plans d'éxécutions sont quasiment identiques.
    Les sélectivités des indexs sont identiques.
    Les datas sont identiques.

    Le seul pb que nous pensons être à l'origine de la différence entre les 2 instances, est l'absence de rebuild d'index sur la prod
    Les segments sont plus segmentés, mais ce n'est pas non plus super flagrant.

    Nous pensons également que le refresh des stats sur l'instance de la prod a pu corrompre le comportement de l'optimizer. J'ai déjà entendu parler de pbs de calculs de stats sur la 8i.

    Pour le reste, on séche.

    Quelles pistes vous semblerait-il intéressantes d'introspecter ?

    Merci de votre aide
    PpPool

  2. #2
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Les plans d'éxécutions sont quasiment identiques.
    Il serait important de
    1- comparer les plans d'execution qui sont différents,
    2- et lorsqu'il y a des différences de temps de réponse alors que les plans d'exécution sont les mêmes, alors comparer les statistiques d'exécution (tkprof avec wait events)

    Sinon, comment est fait le refresh ? logique (imp/exp) ou physique (clone) ?

    Cordialement,
    Franck.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  3. #3
    Membre averti
    Inscrit en
    Novembre 2002
    Messages
    549
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 549
    Points : 436
    Points
    436
    Par défaut
    Bonjour franck

    merci de t'intéresser au pb que j'ai posé

    le refresh est au niveau logique exp/imp au niveau schéma

    pour les analyses plus fines, c'est en effet ce que nous avons commencé. Nous avons en effet pas mal de pbs d'attentes au niveau I/O sur la prod

    mais là où nous sommes plus inquiet, c'est au niveau d'un simple plan d'exécution que l'on peut faire sans exécuter

    sur la prod, les couts sont sensiblement 10* plus élévés
    nous constatons également des comportements bizarres comme des accés SORT/MERGE JOIN sur la prod, et des accés bcq plus performants comme des HASH JOIN sur la pré-prod

    mystére de l'ouest : même config de l'instance au niveau OPTIMIZER, HASH
    PpPool

  4. #4
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    D'autant plus que en 8i le plan d'exécution ne devrait pas changer de manière aléatoire (pas de bind variable peeking, pas de pga automatique, ...)

    Alors pour creuser cette requête qui donne de si différents plans d'exécution, le meilleur moyen c'est la méthode lourde:

    ALTER SESSION SET EVENTS '10053 trace name context forever, level 1';
    EXPLAIN PLAN FOR ...
    ALTER SESSION SET EVENTS '10053 trace name context off';

    et récupérer la trace dans UDUMP

    Ceci pour les 2 instances, et à comparer. Tu verra facilement les paramètres différents, les statistiques différentes.
    Et en creusant un peu plus tu verra le choix du plan d'exécution.


    Sinon, pour SORT/MERGE JOIN versus HASH JOIN, une raison pourrait êtr que RBO est utilisé (par manque de statistiques par exemple). Mais dans ce cas, tu ne verrais pas le coût lors de l'explain plan.
    Parce que c'est rare que SORT/MERGE JOIN paraisse meilleur qu'un HASH JOIN. Les 2 bases, c'est les mêmes charactersets et paramètres NLS_LANG ?
    Si tu force le hash join ( hint USE_HASH(table table) ) est-ce que le plan d'exécution change ?

    Cordialement,
    Franck.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  5. #5
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 948
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 948
    Points : 5 847
    Points
    5 847
    Par défaut
    Bonsoir,

    Y a t il un réel intérêt à recalculer les stats tous les soirs ?
    Parce qu'à priori tu flush les plans d'exécution existant, et re hard-parse tous les matins tes requêtes ce qui n'est pas forcément voulu.

    Sinon comment sont exportées les statistiques vers la pré prod ?
    via exp/imp, via DBMS_STATS.EXPORT_SCHEMA_STATS ou recalculé après import des données?

    Bon ça ne t'aidera pas à résoudre directement ton problème de perfs, mais peut être à stabiliser la solution trouvée.

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/05/2010, 16h48
  2. Différence entre une instance oracle et un serveur
    Par HE_IS_ALIVE dans le forum Administration
    Réponses: 1
    Dernier message: 20/01/2009, 21h25
  3. Réponses: 5
    Dernier message: 22/04/2008, 15h56
  4. Réponses: 1
    Dernier message: 20/06/2007, 17h03
  5. Réponses: 4
    Dernier message: 06/09/2006, 12h53

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