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 :

commit et performances


Sujet :

Administration 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 commit et performances
    Bonjour à tous,

    j'ai fait une constatation et j'aimerais avoir votre avis sur la cause exacte de cette constatation...

    une procédure stockée ne contient aucun commit. Cette procédure travaille principalement sur une table dans laquelle elle insère des lignes, lignes sur lesquelles sont effectuées plusieurs updates.

    En rajoutant des commit à cette procédure j'obtiens une augmentation de performances significative.

    La question que je me pose est à quoi est du exactement cette augmentation de performance ???

    Oracle n'est-il pas sensé traiter les données non commitées comme les données normales ?

    Merci pour vos suggestions.

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Points : 503
    Points
    503
    Par défaut
    Bonjour.
    Les données non "commitées" sont stockées avant modification dans le segment UNDO. Si la quantité de données est grosse, il y a un travail d'extension du segment UNDO qui prend de la ressource.
    Comme si vous faisiez un calcul compliqué et que vous deviez mémoriser toutes les étapes au lieu de ne conserver que le dernier résultat.

  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
    Ca je l'avais bien deviné mais pour contrer cela j'ai fait le traitement une première fois pour étendre le undo.

    à la seconde exécution le traitement était aussi long alors qu'il n'avait pas de extend à faire !

  4. #4
    Membre expérimenté Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Points : 1 332
    Points
    1 332
    Par défaut
    Si tu veux voir ce que ORACLE fait exectement , ou il passe le temps d'execution c'est plutout les TRACES SQL qu'il faut faire

    ou un AUTOTRACE

    http://oracle.developpez.com/guide/tuning/tkprof/

    asktom.oracle.com tahiti.oracle.com otn.oracle.com

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.


    phrase chinoise issue du Huainanzi

  5. #5
    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,
    La seule explication que je vois, c'est s'il y a des indexes et que les updates modifient une colonne indexée. Parce que dans ce cas, l'ancienne entrée d'index est marquée supprimée mais subsiste jusqu'à la fin de la transaction.
    Donc sans commits intermédiaires, l'index peut grossir plus.
    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

  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
    D'accord....

    Ce cas est un peu particulier car la table est lockée. En fait il s'agit d'une table utilisée comme table temporaire dont la taille peut passer très rapidement de 10 à 100000 enregistrements.

    En lockant les tables (dbms_stats.lock_table_stats()) en ayant supprimé les stats auparavant cela permet à l'optimiser de se débrouiller correctement dans la majorité des cas. Il semble cependant que lorsque l'on modifie beaucoup les données avant de réaliser des updates dessus sans faire de commit cela met l'optimiser en vrac car il continue de faire des FTS sur une table avec 20.000 enregistrements

  7. #7
    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,
    Le fait de committer ou pas ne peut pas changer le plan d'execution. Le plan d'execution n'est pas propre à une transaction.
    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

  8. #8
    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
    Citation Envoyé par pachot Voir le message
    Bonjour,
    Le fait de committer ou pas ne peut pas changer le plan d'execution. Le plan d'execution n'est pas propre à une transaction.
    Cordialement,
    Franck.
    J'ai fait des tests complémentaires, le plan est le même mais le FTS alors que les modification antiérieures ont été validées prends 7 seconde alors que si les modification précédentes n'ont pas été commitées il prends 14 sec

  9. #9
    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,

    C'est un résultat surprenant.
    Il faudrait d'abord voir ce qui est responsable de ces 7 secondes d'écart. Des stats venant de V$SQL ou mieux un tkprof permettraient de voir c'est c'est un nombre de blocks lus plus grand, par exemple.

    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

Discussions similaires

  1. [Batch] batchUpdate performances commit
    Par waouni dans le forum Spring
    Réponses: 1
    Dernier message: 02/07/2012, 16h21
  2. [Oracle8i]Performances, Commit, traitement long
    Par Drizzt [Drone38] dans le forum Oracle
    Réponses: 4
    Dernier message: 17/05/2006, 08h57
  3. DBExpress, transactions, Commit et performances...
    Par KRis dans le forum Bases de données
    Réponses: 2
    Dernier message: 21/01/2006, 03h01
  4. [JDBC][connexion persistante] performances avec JDBC
    Par nawac dans le forum Connexion aux bases de données
    Réponses: 6
    Dernier message: 06/05/2003, 10h37
  5. performance entre 3DS, ase, asc ...
    Par amaury pouly dans le forum OpenGL
    Réponses: 3
    Dernier message: 24/03/2003, 11h41

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