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 :

Problème de performance atypique


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Par défaut Problème de performance atypique
    Bonjour a tous...je bosse sous Oracle et j'ai des problèmes de perf assez bizarre que je n'arrive pas a expliquer...

    La version d'Oracle utilisée est 9i

    J'expose mon problème:

    J'ai une grosse table sous Oracle donc, qui contient 8,6 millions de lignes.
    Je souhaite virer des lignes de données, environ 100 000

    Quant j'execute cette requête :
    select count(*) from rsa_fixe where annee=2006;
    elle s'execute en 2sec (Oracle utilise l'index que j'ai placé sur le champ annee)

    Lorsque j'execute
    delete from rsa_fixe where annee=2006;
    Ca dure plus de 4 heures, et quand je regarde mon plan d'éxecution, Oracle n'utilise plus mon index...

    J'ai tenté ma suppression en utilisant un autre champ, lui aussi indexé :
    delete from rsa_fixe where type_fichier='priv2006';
    Cette requête concerne le même nombre de lignes et passe bien par son index...mais même topo, plus de 4h d'execution....

    J'ai lancé un analyze sur cette table, même topo, des perfs superbe en select, mais ca rame sévère lors des delete...

    La commande utilisée pour analyser ma table :

    analyze table rsa_fixe compute statistics for table for all indexes for all indexed columns;

    Donc voila, je suis pas dba oracle, donc quelque chose doit m'échapper...si quelqu'un a une idée, je suis preneur car je ne comprends plus...

    Merci d'avance a tous!

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 500
    Par défaut
    La seule chose qui me vient à l'idée, c'est que contrairement au SELECT, le DELETE doit écrire dans les ROLLBACK SEGMENT, mais ça ne justifie pas à ma connaissance un plan d'exécution différent, ni 4 heures d'écritures pour 100 000 lignes (à moins que les lignes comportent des centaines de colonnes...).

    A moins qu'il y ait un trigger ligne de la mort sur DELETE de ta table ?

  3. #3
    Membre expérimenté Avatar de Loyd1974
    Profil pro
    Inscrit en
    Août 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 176
    Par défaut
    Est-ce que tu n'aurais pas une table qui aurais une foreign key sur une des colonnes de la table que tu veux effacer ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Par défaut
    Pour répondre aux questions, y a pas 100 colonnes, une trentaine tout au plus...en gros, d'habitude c'est quasi instantané...pas de trigger, ni de foreign key...c'est d'ailleurs bien ce qui m'inquiète...
    Je me demande si j'ai pas eu une requête précédente qui a été interrompue, et que du coup Oracle a du mal a faire son rollback, ce qui expliquerai pourquoi j'ai des bonnes perf en select, mais lamentables en delete...
    Maintenant, comment savoir si je suis sur la bonne piste...pas simple l'administration sous Oracle...
    En tout cas merci pour vos réponses...

  5. #5
    Membre Expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Par défaut
    4h ça mouline

    la vue v$session_longops indiquera forcément quelque chose.. et vous y verrez quoi !

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Par défaut
    Bon, mon delete tourne toujours, ca fais 6 heures maintenant...

    En regardant sous Tora l'état de mes sessions, j'ai découvert ceci :

    J'ai deux transactions active sur ma base...et deux fois la même requête...
    (delete from rsa_fixe where annee=2006)
    Y en a une, je le sais, elle tourne sous mes yeux, mais l'autre?... je me demande si c'est pas un traitement précédent interrompu qui continu a vivre sa vie seul (en train de faire un rollback?)

    En regardant la partie longops...pour l'une des requetes, j'ai bien des étapes, qui semblent toutes être 'completed'....pour la seconde je n'ai rien...

    Par contre, j'ai découvert une petite chose anormale je pense
    Pour une des deux requete, j'ai l'impression d'avoir un PENDING_LOCK en Mode exclusive.
    Pour ces deux requêtes, d'ailleurs quand je regarde la partie 'Locked Objects'...ben je retrouve ma table....RSA_FIXE qui semble être lockée avec un locked mode = RowX...

    Je sais pas trop ce que ca signifie mais ca ne me semble pas bon signe...
    Comment puis-je délocker ma table?

    Merci d'avance, et merci de m'avoir mis sur la piste du longops....

Discussions similaires

  1. Problème de performance avec LEFT OUTER JOIN
    Par jgfa9 dans le forum Requêtes
    Réponses: 6
    Dernier message: 17/07/2005, 13h17
  2. [jeu]problème de performance d'un algo
    Par le Daoud dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 30/05/2005, 16h07
  3. [C#] Probléme de performance avec IsDbNull
    Par jab dans le forum Windows Forms
    Réponses: 8
    Dernier message: 04/04/2005, 11h39
  4. [oracle 9i][Workbench]Problème de performance
    Par nuke_y dans le forum Oracle
    Réponses: 6
    Dernier message: 03/02/2005, 17h38
  5. [ POSTGRESQL ] Problème de performance
    Par Djouls64 dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 26/05/2003, 16h18

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