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

PL/SQL Oracle Discussion :

Performance d'un traitement PL/SQL


Sujet :

PL/SQL Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 24
    Points : 11
    Points
    11
    Par défaut Performance d'un traitement PL/SQL
    J'ai un problème de performance sur ma base Oracle 9.2.0.5.

    J'ai un traitement PL/SQL qui dure environ 30 secondes.

    - Lorsqu'il est exécuté 1000 fois dans une session différente il dure toujours 30 secondes environ même après 1000 exécutions.

    - Lorsqu'il est exécuté 1000 fois dans la même session chaque exécution prend plus de temps, a 200 exécution j'arrive a environ 10 minutes pour chaque traitement. Autant dire que je n'arrive jamais au bout !

    Avez-vous un idée de l'origine du problème ?

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    sans savoir ce qu'il fait ni comment aucune chance qu'on puisse t'aider

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Aïe c'est dur a expliquer.

    C'est un traitement sur des objets de la base.
    Il y a plus de 6000 lignes de code PL/SQL.

    Mais je me demande un truc l'exécution de :

    SELECT count(*) FROM dual WHERE 1 = 1

    prend-elle beaucoup plus de ressources qu'un

    IF 1 = 1 THEN
    true
    ELSE
    false
    END

    Merci d'avance

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    bien sûr :

    count(*) -> du tri
    SELECT -> moteur Oracle en plus du moteur PL/SQL

    Quelle drole d'idée de faire de telles choses

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Héhé et oui mais qui a eu cette idée ??? ;-)

    Est-ce possible de faire une comparaison dynamique par exemple

    condition := '1 = 1';

    IF condition THEN
    yes
    ELSE
    false
    END IF;

  6. #6
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 134
    Points : 84
    Points
    84
    Par défaut
    IF 1=1

    plutôt non ? (même si cela ne sert pas à grand chose

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    oui mais de manière dynamique à la manière du

    EXECUTE IMMEDIATE 'select ' || '1' || ' from dual' INTO resultat;

  8. #8
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Citation Envoyé par boxsters
    Héhé et oui mais qui a eu cette idée ??? ;-)

    Est-ce possible de faire une comparaison dynamique par exemple

    condition := '1 = 1';

    IF condition THEN
    yes
    ELSE
    false
    END IF;
    quel intérêt ???

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Eh bien tester une condition qui n'est pas dans le code mais dans la base sous forme de donnée !

  10. #10
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    qu'est ce que c'est que cette histoire

    j'avais encore jamais entendu ça

    Est-ce qu'il n'y a pas possibilité d'ajouter le contenu de la colonne à une requête... tu fais quoi dans ton IF ?

  11. #11
    Membre à l'essai
    Inscrit en
    Août 2003
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    On ne peut pas faire de la comparaison dynamique,
    Le IF ....THEN prend une variable booléenne, ou une expression booléenne mais ne remplace pas les expressions chaines à la manière des macros et pré-processeur C/C++.

    Afi

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    En fonction de la condition je démarre une procédure ou une autre si la condition est fausse.

    Comme je l'ai dit je travaille avec les objets et leurs méthodes donc ça peut paraître atypique.

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Merci AFIJARODOX pour cette réponse claire et précise.

    Je m'en vais donc pondre un autre bout de code !!

    A tchao

    Bon week-end

  14. #14
    Membre à l'essai
    Inscrit en
    Août 2003
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    J'ai connu un projet comme ça,
    dans lequel on génère nous même du code pour le faire exécuter (pré-compiler,...).
    Ca n'a pas toujours été la gloire

    Afi.

  15. #15
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    c'est un problème de conception pour moi, pas étonnant qu'il y a des problèmes de perfs

    On ne peut pas faire tous avec l'importe quoi, typiquement ici, la solution technique n'est pas adapté à l'outil... bon courage

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Donc utiliser les objets dans Oracle ce n'est pas un bon outil pour toi.

    C'est un point de vue, j'en ai un autre.

    Merci pour ton aide orafrance

  17. #17
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    les objets oui mais coder des conditions directement dans les tables n'est pas une bonne solution sous Oracle. En effet, tu as vu par toi même que tu devais passer par un ordre SELECT pour vérifier cette condition générant ainsi des commandes inutiles. D'autres SGBD sont peut-être plus adapté mais dans ce cas précis, Oracle souffrira forcément d'une telle modélisation.

    Ceci étant, je te laisse le soin de persister ou non dans cette voie

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Ouais merci en tout cas pour ton aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Optimisation temps traitement PL/SQL
    Par oradevb dans le forum PL/SQL
    Réponses: 9
    Dernier message: 03/07/2009, 11h43
  2. Performance du base de données SQL server 2000
    Par randriamanana dans le forum Administration
    Réponses: 5
    Dernier message: 11/06/2009, 11h16
  3. Performance d'une requête sous SQL Server 2005
    Par Menoto dans le forum Développement
    Réponses: 4
    Dernier message: 20/03/2008, 09h58
  4. Performance d'une requête sous SQL Server 2005
    Par Menoto dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/03/2008, 09h58
  5. [SQL] Envoi d'un formulaire/mail après traitement avec sql
    Par chamoix dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 08/05/2007, 19h46

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