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 :

[optimisation] Reconstruction d'index et performances


Sujet :

Oracle

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 76
    Points : 67
    Points
    67
    Par défaut [optimisation] Reconstruction d'index et performances
    Bonjour à tous,

    un problème que je rencontre me laisse sceptique... Un traitement sur une appli durait plusieurs heures... Ceci principalement du à une requête d'update qui met environ 1 secondes par exécution, ceci n'est pas le fonctionnement normal de l'application.

    Lorsque je regarde le plan d'exécution de la requête, celui-ci est correct et passe bien par le bon index, par contre la presque totalité du temps passé est sur du temps CPU. Si je fait un rebuild de l'index, le plan d'exécution reste identique mais le temps / requête passe à 0.4 ms.

    J'ai du mal à saisir en quoi une reconstruction d'index peut engendrer cela sachant que les index sont supprimés et recréés régulièrement sur cette base (oui je sais >_<). Je me serais plutôt attendu à une baisse de performance en même temps que l'organisation de l'index se dégradait, mais à une augmentation si nette du temps de la requête.

    C'est un oracle 10.2.4 sur une linux redhat.

    Vous auriez une explication "logique" à un comportement de la sorte ?

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

    Informations professionnelles :
    Activité : DBA Oracle

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

    pouvez vous fournir les traces/stas/plans vous permettant d'arriver à cette conclusion?

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 76
    Points : 67
    Points
    67
    Par défaut
    Voici le plan d'exécution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ----------------------------------------------------------------------------------------------------------
    | Id  | Operation                     | Name                     | Rows  | Bytes | Cost (%CPU)| Time     |
    ----------------------------------------------------------------------------------------------------------
    |   0 | UPDATE STATEMENT              |                          |     1 |    52 |     2   (0)| 00:00:01 |
    |   1 |  UPDATE                       | TBDT1_JOUR               |       |       |            |          |
    |*  2 |   FILTER                      |                          |       |       |            |          |
    |*  3 |    TABLE ACCESS BY INDEX ROWID| TBDT1_JOUR               |     1 |    52 |     2   (0)| 00:00:01 |
    |*  4 |     INDEX RANGE SCAN          | IDXU_IDUNBLRATBLART1_CAT |     1 |       |     1   (0)| 00:00:01 |
    ----------------------------------------------------------------------------------------------------------
    qui se trouve être le même dans les 2 cas...

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

    Informations professionnelles :
    Activité : DBA Oracle

    Informations forums :
    Inscription : Janvier 2010
    Messages : 139
    Points : 271
    Points
    271
    Par défaut
    Un Index Range Scan peut effectivement s'avérer un peu plus long si l'index est fragmenté. C'est l'un des rares cas où le rebuild d'index peut aider. Sinon la reconstruction des indexes régulières n'est pas une bonne pratique.
    http://richardfoote.files.wordpress....-the-truth.pdf

    As-tu un rapport tkprof pour les 2 requêtes?

  5. #5
    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
    À noter aussi, si j'ai bien compris, dans votre traitement vous avez énormément de mises à jour que vous traitez en ligne à ligne.

    Si c'est réalisable dans votre cas, une requête ensembliste de mise à jour sera beaucoup plus efficace.

  6. #6
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 76
    Points : 67
    Points
    67
    Par défaut
    Merci pour vos réponses,

    Je comprends bien votre propos, seulement cela ne m'éclaire pas sur la cause du problème... Exemple, le traitement était lent, suite à un rebuild de l'index, le traitement se retrouve immédiat.

    2 jours après le traitement s'avère encore très long, il ne s'agit donc pas de la fragmentation de l'index qui est en cause car les lignes de la tables sont modifiées de manière marginale (au plus quelques 10 aines de milliers de modifications sur 1.500k lignes).

    Je vais voir à ressortir le tkprof de la requête.

  7. #7
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Ca sera mieux. Jusqu’au là vous dit : « mon traitement était lent je fais un rebuild de index et après le traitement est devenu rapide. Mais aujourd’hui je constante à nouveau que mon est traitement lent. » Donc peut être ça n’a rien à voir avec le rebuild d’index.
    Par contre une trace SQL étendue pourrait mettre en évidence ce qui se passe.

Discussions similaires

  1. Reconstructions d'index qui dégradent les performances
    Par vinse51 dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 06/08/2011, 05h11
  2. Réponses: 21
    Dernier message: 24/01/2007, 21h29
  3. [DBA] : reconstruction d'indexs
    Par PpPool dans le forum Oracle
    Réponses: 21
    Dernier message: 19/10/2006, 16h13
  4. Reconstruction d'index
    Par superfly dans le forum Oracle
    Réponses: 22
    Dernier message: 23/03/2006, 16h58
  5. reconstruction d'index de texte intégral
    Par zarbiman dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 14/12/2005, 08h23

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