|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : juillet 2007 Messages : 5 ![]() |
Bonjour tout le monde,
J'ai là un problème d'insertion de donnée. l'insertion se fait comme ceci : Code :
le problème est que je n'arrive pas à comprendre pourquoi l'insertion ne se fait pas (ça tourne sans faire d'insertion) si quequ'un a une piste c'est urgent? Merci d'avance |
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Philippe CHIRCOPChef de projet Inscription : juin 2007 Messages : 1 109 ![]() |
- Mettre les balises [CODE] afin de rendre le code plus lisible
![]() - Eviter d'être péremptoire !
__________________
Garuda गरूड Brahmâ la Guerre et Vishnu la Paix Oracle 10.2.0.4 - Forms6i patch 17 - Toad 11.1 - sharePoint 2010 |
|
|
00
|
|
|
#3 | ||||
|
Membre Expert
![]() Philippe CHIRCOPChef de projet Inscription : juin 2007 Messages : 1 109 ![]() |
Deja, tu fais trois fois le meme appel
Code :
Code :
__________________
Garuda गरूड Brahmâ la Guerre et Vishnu la Paix Oracle 10.2.0.4 - Forms6i patch 17 - Toad 11.1 - sharePoint 2010 |
||||
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 453 ![]() |
Je crains que tu n'ais tord Garuda
Code :
__________________
More Code : More Bugs. Less Code : Less Bugs |
||
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Philippe CHIRCOPChef de projet Inscription : juin 2007 Messages : 1 109 ![]() |
Effectivement, mea culpa !
Pourtant, je continue à penser que c'est ces trois appels à des fonctions basées qui doivent poser pb !
__________________
Garuda गरूड Brahmâ la Guerre et Vishnu la Paix Oracle 10.2.0.4 - Forms6i patch 17 - Toad 11.1 - sharePoint 2010 |
|
|
00
|
|
|
#6 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 453 ![]() |
Pour moi si le SELECT met 2 minutes à s'exécuter réellement, le problème vient de la table TEST_LTD.
Des triggers dessus ? Sinon, sans volumétrie, explication des functions de calcul, explain plan et autres, on ne va pouvoir faire que des suppositions.
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : juillet 2007 Messages : 5 ![]() |
Re bonjour,
juste pour comprendre: la clause fonctionne comme suit: dans un 1er temps oracle execute la partie du select, le resultat est stocké dans la RAM puis il enchaine sur l'insertion. Maitenant, ma requête prend 1.5 min à s'executer (la partie du select). Le nombre de rows retournés est environ 30000. Ce que je sais c'est que un tel nombre est rapidement inseré dans une table. je n'arrive pas à comprendre pourquoi ça marche pour une insertion normale ne comportant pas de fonction alors que c'est un KO pour la mienne. merci de me corriger si je me trompe. |
|
|
00
|
|
|
#8 | ||
|
Invité de passage
![]() Inscription : juillet 2007 Messages : 5 ![]() |
Re bonjour,
juste pour comprendre: la clause fonctionne comme suit: dans un 1er temps oracle execute la partie du select, le resultat est stocké dans la RAM puis il enchaine sur l'insertion. Maitenant, ma requête prend 1.5 min à s'executer (la partie du select). Le nombre de rows retournés est environ 30000. Ce que je sais c'est que un tel nombre est rapidement inseré dans une table. je n'arrive pas à comprendre pourquoi ça marche pour une insertion normale ne comportant pas de fonction alors que c'est un KO pour la mienne. merci de me corriger si je me trompe. pour ma requête la voici et je m'excuse pour l'ancien format: Code :
|
||
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Philippe CHIRCOPChef de projet Inscription : juin 2007 Messages : 1 109 ![]() |
1) Parce qu'un appel à une fonction n'est pas neutre en terme de ressources
2) Parce que tu ne maitrises pas ce qui se passe à l'interieur de celle_ci (qui peut etre fort compliqué )
__________________
Garuda गरूड Brahmâ la Guerre et Vishnu la Paix Oracle 10.2.0.4 - Forms6i patch 17 - Toad 11.1 - sharePoint 2010 |
|
|
00
|
|
|
#10 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 453 ![]() |
Sur la façon dont Oracle gère l'INSERT je ne suis pas sur qu'il stocke tout le résultat dans la RAM pour après gérer l'insertion.
1/ Es-tu sur que c'est 1.5 minutes pour fetcher tous les résultats ? 2/ Quels sont les triggers de ta table d'insertion ?
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#11 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 453 ![]() |
Quand tu parles de la partie du SELECT c'est tout le SELECT n'est ce pas, pas le SELECT du FROM (SELECT)?
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() Inscription : juillet 2007 Messages : 5 ![]() |
oui tout le select prend 1.5 min
|
|
|
00
|
|
|
#13 |
|
Membre actif
![]() Inscription : février 2007 Messages : 167 ![]() |
Salut,
En fait la requête select elle même n'a pas d'importance puisque tu dis qu'elle retourne les données en 1.5 minutes. On peut toujours essayer de tuner mais le soucis est que ça ne veut pas s'insérer dans la test_ltd. Tout est dans le "ça ne s'insère pas". Ca peut être lent ou ne pas se faire ce qui est différent. Admettons que tu laisses la requête tourner 24H. Si rien n'est inséré je vois OU des triggers sur la table cible OU une session concurrente qui locke la table cible. Pour dépister ça je prendrais une seule ligne retournée par le select et je ferais un insert values histoire d'en avoir le coeur net. Si au contraire au bout de 24 heures ça a marché c'est plutôt un soucis de lenteur. Là ce serait plutôt OU un trigger sur la table cible qui réalise des opérations lourdes, OU peut-être une taille des journaux qui serait trop faible. Combien de temps a tourné ta requête sans rien insérer ? Pozzo |
|
|
00
|
|
|
#14 |
|
Invité de passage
![]() Inscription : juillet 2007 Messages : 5 ![]() |
bonsoir tt le monde
en fait j'ai fait le test avec un seul row (where rownum=1) et l'insertion a été fait au bout de 24s.un autre truc que je ne comprend pas et voici le detail: je travaille avec toad et comme je l'ai mentionné la requête fait 1,5 pour s'executer. lorsque je mais un count record(option de toad) pour savoir le nombre de rows retournés il affiche le bon nombre comme quoi il a effectué le calcul pour tous les rows ( la table principale est pc_commande qui a 28000 lignes et ma requete affiche bien ce nombre du coup le calcul a été fait pour l'ensemble des lignes). lorsque je voulais descendre dans l'affichage pour voir d'autre lignes ça se bloque et il ne donne l'impression qu'il re-execute la requête. En fai ce n'est pas comme un select ordinaire ou je peut aller dans l'affichage du resultat consulter les 'enregistrement retourné sans que toad se bloque. Merci les gas de votre aide. une chose je travaille sur un projet et malheureusement cette requête est la base de tous calculs à effectuer merci encore de votre gentillesse et votre réactivité. |
|
|
00
|
|
|
#15 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 453 ![]() |
L'avantage de TOAD, c'est qu'il fait des fetch de 25 lignes (par curseur).
Donc dès que tu veux afficher les 25 suivantes, il recontinue son curseur et fetche les 25 lignes suivantes. Donc c'est 1.5min pour les 25 premières lignes. Va falloir nous poster toutes les fonctions appelées par ta requete. Ce sont elles qu'il va falloir optimiser.
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com