|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : décembre 2004 Messages : 24 ![]() |
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 ? |
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
sans savoir ce qu'il fait ni comment aucune chance qu'on puisse t'aider
|
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : décembre 2004 Messages : 24 ![]() |
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 |
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
count(*) -> du tri SELECT -> moteur Oracle en plus du moteur PL/SQL Quelle drole d'idée de faire de telles choses |
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : décembre 2004 Messages : 24 ![]() |
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; |
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Inscription : mai 2005 Messages : 134 ![]() |
IF 1=1
plutôt non ? (même si cela ne sert pas à grand chose |
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() Inscription : décembre 2004 Messages : 24 ![]() |
oui mais de manière dynamique à la manière du
EXECUTE IMMEDIATE 'select ' || '1' || ' from dual' INTO resultat; |
|
|
00
|
|
|
#8 | |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Citation:
|
|
|
|
00
|
|
|
#9 |
|
Invité régulier
![]() Inscription : décembre 2004 Messages : 24 ![]() |
Eh bien tester une condition qui n'est pas dans le code mais dans la base sous forme de donnée !
|
|
|
00
|
|
|
#10 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
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 ? |
|
|
00
|
|
|
#11 |
|
Candidat au titre de Membre du Club
![]() Inscription : août 2003 Messages : 13 ![]() |
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 |
|
|
00
|
|
|
#12 |
|
Invité régulier
![]() Inscription : décembre 2004 Messages : 24 ![]() |
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. |
|
|
00
|
|
|
#13 |
|
Invité régulier
![]() Inscription : décembre 2004 Messages : 24 ![]() |
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 |
|
|
00
|
|
|
#14 |
|
Candidat au titre de Membre du Club
![]() Inscription : août 2003 Messages : 13 ![]() |
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. |
|
|
00
|
|
|
#15 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
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 |
|
|
00
|
|
|
#16 |
|
Invité régulier
![]() Inscription : décembre 2004 Messages : 24 ![]() |
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 |
|
|
00
|
|
|
#17 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
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 |
|
|
00
|
|
|
#18 |
|
Invité régulier
![]() Inscription : décembre 2004 Messages : 24 ![]() |
Ouais merci en tout cas pour ton aide.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com