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 :

Rebuild après create unique index


Sujet :

Administration Oracle

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 2
    Par défaut Rebuild après create unique index
    Bonjour,

    Je rencontre un problème de "performance" après construction d'un index.

    Nous importons quotidiennement des tables de tarifs automobile via le script suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DROP TABLE EUROTAX_ADDITION;
    ALTER TABLE EUROTAX_ADDITION_TEMP RENAME TO EUROTAX_ADDITION;
    CREATE INDEX EUROTAX_ADDITION_ADDVAL ON EUROTAX_ADDITION ("ADDVAL") ;
    CREATE INDEX EUROTAX_ADDITION_ADDVALUNTIL ON EUROTAX_ADDITION ("ADDVALUNTIL") ;
    CREATE INDEX EUROTAX_ADDITION_MARKET ON EUROTAX_ADDITION ("ADDMARKET");
    CREATE INDEX EUROTAX_ADDITION_VEHTYPE ON EUROTAX_ADDITION ("ADDVEHTYPE") ;
    CREATE INDEX EUROTAX_ADDITION_NATCODE ON EUROTAX_ADDITION ("ADDNATCODE") ;
    CREATE INDEX EUROTAX_ADDITION_ADDFLAG ON EUROTAX_ADDITION ("ADDFLAG");
    CREATE INDEX EUROTAX_ADDITION_ADDEQCODE ON EUROTAX_ADDITION ("ADDEQCODE");
    CREATE UNIQUE INDEX EUROTAX_ADDITION_PK ON EUROTAX_ADDITION ("ADDMARKET", "ADDVEHTYPE", "ADDNATCODE", "ADDEQCODE", "ADDVAL") ;
    Le problème se situe au niveau du dernier index créé :
    INDEX EUROTAX_ADDITION_PK
    Lorsque nous requetons sur la table via les clés indexées, le temps de réponse est de 10 secondes
    Si dans le manager oracle, je fais un rebuild de cet index, le temps de réponse tombe à 2 secondes pour le même jeu de clés

    Pourquoi suis-je obligé de faire un rebuild alors que l'index est recréé ?

    Pour infos
    (La table contient 7,5 Millions de lignes)
    Le select count(*) prend 15 sec
    Cela me parait également long

    Cordialement

  2. #2
    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
    Essayez plutôt de rafraîchir les statistiques :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DBMS_STATS.GATHER_TABLE_STATS
    (
        OWNNAME          => 'votre_owner' ,
        TABNAME          => 'EUROTAX_ADDITION',
        ESTIMATE_PERCENT => DBMS_STATS.AUTO_SAMPLE_SIZE,
        CASCADE          => TRUE
    );

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 2
    Par défaut
    Merci de votre réponse Fabien,

    Etant donné que le simple fait de lancer le rebuild de cet index via le manager divise le tps de réponse par 4 ou 5, dois je comprendre que la commande rebuild du manager execute également un recalcul des stats ?

  4. #4
    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
    Il faut voir ce qui se passe dans la requête avant et après la reconstruction avec plan d'exécution et trace Oracle pour voir ce qui influe réellement sur les performances.

    Sans ces outils, on ne peut qu'émettre des hypothèses.

  5. #5
    Expert confirmé
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    CREATE INDEX calcule les stats depuis la 10g.
    Mais ton résultat peut dépendre: de la version, du partitionnement de la table, des options ti gather_stats que tu lqnce pqr la suite.
    Cordialement,
    Franck.

  6. #6
    Membre expérimenté Avatar de Ahmed AANGOUR
    Homme Profil pro
    DBA Oracle
    Inscrit en
    Janvier 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : DBA Oracle

    Informations forums :
    Inscription : Janvier 2010
    Messages : 139
    Par défaut
    Bonjour,

    Pouvez-vous effectuer le test suivant et nous renvoyer le résultat:

    Sous SQLPLUS:
    1) Recréer votre table et les index
    2) Activer la collecte des stats d'execution avec la commande suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    alter session set statistics_level=ALL;
    3) Exécutez votre requête

    4) Affichez le plan avec les stats d'exécution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SET LINES 300
    SET PAGES 500
    SELECT * FROM table(dbms_xplan.display_cursor(NULL,NULL, 'allstats last'));
    5) Rebuild de votre index

    6) Exécutez votre requête

    7) Affichez le plan avec les stats d'exécution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SET LINES 300
    SET PAGES 500
    SELECT * FROM table(dbms_xplan.display_cursor(NULL,NULL, 'allstats last'));
    A noter que pour pouvoir utiliser la fonction DISPLAY_CURSOR du package DBMS_XPLAN le USER que vous utilisez doit posséder les droits sur les vues suivantes: v$session, v$sql, v$sql_plan, and v$sql_plan_statistics_all
    Le plus simple c'est de granter au user le privilege "SELECT ANY DICTIONARY"

    cdmt,
    Ahmed

  7. #7
    Membre confirmé
    Inscrit en
    Août 2009
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2009
    Messages : 107
    Par défaut
    Une aute éventualité : lors de te seconde requête, tes blocs de données sont en cache. Te reqûete est beaucoup plus rapide mais cela n'a rien à voir avec le rebuild en lui-même.

Discussions similaires

  1. rebuild d'un gros index
    Par moi26 dans le forum Administration
    Réponses: 18
    Dernier message: 22/03/2008, 14h10
  2. PRIMARY KEY - UNIQUE - INDEX
    Par Thierry8 dans le forum Requêtes
    Réponses: 4
    Dernier message: 16/12/2005, 23h28
  3. Réponses: 3
    Dernier message: 30/03/2005, 23h15
  4. [Firebird 1.5] duplicate value in unique index
    Par bambou dans le forum SQL
    Réponses: 5
    Dernier message: 03/03/2005, 17h58

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