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 :

Index manquants sur tables de TRCANLZR ?


Sujet :

Administration Oracle

  1. #1
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut Index manquants sur tables de TRCANLZR ?
    Bonjour,

    Dans le cadre d'une migration d'un outil fondé sur Oracle (EIS de la gamme Oracle EPM), je constate que sur mon nouveau serveur une requête est considérablement plus lente que sur l'ancien, avec en outre un plan d'exécution différent (un enchaînement de NESTED JOIN sur le nouveau, un HASH JOIN sur l'ancien).

    J'ai donc commencé par comparer les index, et je constate que l'ancienne a deux index de plus que la nouvelle :
    • TRCA$_PLAN_TABLE_N1 sur la table TRCANLZR.TRCA$_PLAN_TABLE
    • TRCA$_TABLES_PK sur la table TRCANLZR.TRCA$_TABLES


    Est-ce que ça veut dire que l'optimiseur est mal déployé, ce qui explique les différences de comportement, ou bien est-ce totalement anecdotique ?

    Merci d'avance pour toute contribution !
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    HASH JOIN sur l'ancien signifie que les index n'étaient probablement pas utilisés pour les jointures.
    NESTED JOIN sur le nouveau signifie très probablement des statistiques à 0 !

  3. #3
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut
    Salut Waldar, et merci de ta réponse.

    Du coup, qu'est-ce que je devrais faire pour que le nouveau se comporte comme l'ancien ?
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    C'est une piste qu'il faut confirmer, en regardant si les statistiques sont bien à jour sur le nouvel environnement.
    Ou dans la plan d'exécution, si en nombre de lignes estimées il y a 0 ou 1, ça va dans ce sens.

    Dans ce cas, il faut recalculer les stats :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    begin
        dbms_stats.gather_schema_stats
        ( owname  => 'TRCANLZR'
        , options => 'GATHER AUTO'
        , degree  => 8
        );
    end;
    /

  5. #5
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut
    OK, je te remercie.

    Autre question liée : sur l'ancien serveur (qui fonctionne), mon appli utilise une chaîne de connexion qui est rédigée sur ce modèle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DSN=Oracle:TOTO;CODEPAGE=English.Latin1@Binary;UID=alibaba;PWD=sesame;
    Habituellement avec cette appli j'ai des chaînes de connexion sur le modèle ci-dessous, avec TITI qui référence un ODBC.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DSN=TITI;CODEPAGE=English.Latin1@Binary;UID=alibaba;PWD=sesame;
    As-tu une idée de ce que représente ce Oracle: ? Mon objectif final est de forcer l'appli à utiliser un OCI plutôt qu'un ODBC, mais je ne sais pas à quoi fait référence le TOTO de mon premier exemple...
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Pas d'idée pour celui-ci, désolé !

  7. #7
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut
    C'est assez significatif que tu ne connaisses pas, ça doit vouloir dire que c'est une syntaxe spécifique à mon applicatif...
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  8. #8
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Ah pas du tout, le paramétrage de connexion ce n'est vraiment pas mon fort.

  9. #9
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut
    Citation Envoyé par Waldar Voir le message
    HASH JOIN sur l'ancien signifie que les index n'étaient probablement pas utilisés pour les jointures.
    NESTED JOIN sur le nouveau signifie très probablement des statistiques à 0 !
    Quand tu dis des statistiques à 0, ça implique quoi ?
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  10. #10
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Que l'optimiseur pense que la table est vide alors que ce n'est pas le cas, ça se voit bien dans le plan d'exécution (E-Rows = 0), en regardant les statistiques de la table avec un outil type Toad ou SQL Developer ou en exécutant une requête de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select table_name, tablespace_name, last_analyzed
      from all_tables
     where owner = 'TRCANLZR';

  11. #11
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut
    Donc, si je comprends bien, quand il pense que la table est vide il fait un NESTED JOIN au cas où il y ait des données quand même ?
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  12. #12
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Difficile de réduire toute la complexité de l'optimiseur à cette phrase, mais oui c'est une possibilité.
    Une autre pourrait être des index pas très efficaces.

    Le mieux à faire c'est de comparer les plans d'exécutions réel (avec l'hint gather_statistics) voire la trace serveur.

Discussions similaires

  1. Création index + stat sur table partitionnée
    Par ouinih dans le forum Administration
    Réponses: 4
    Dernier message: 13/08/2008, 08h53
  2. Réponses: 3
    Dernier message: 13/04/2007, 16h00
  3. Réponses: 3
    Dernier message: 05/04/2007, 09h57
  4. Réponses: 4
    Dernier message: 23/09/2005, 09h16
  5. [Sybase] Utilisation indexes sur table Proxy
    Par MashiMaro dans le forum Sybase
    Réponses: 2
    Dernier message: 20/02/2004, 10h20

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