[Java-Jdbc] requêtes SQL n'aboutissant pas !

requêtes SQL n'aboutissant pas ! [Java-Jdbc] - Java - Programmation

Marsh Posté le 31-07-2002 à 09:13:00    

voila ma situation, pour le moins emmerdante :
Sur une plateforme de test dans ma boite, ma web-app fonctionne bien :
je balance un select qui rend une dizaine de résultats, sur une table contenant en gros 15 000 enregistrements, ça me répond en, mettons 1/4 de secondes.
Quand j'installe mon truc chez le client, ou la table ds laquelle je fais ce select contient en gros 100 millions d'enregistrements, cette même requête (qui là encore devrais rendre une diziaine d'enregistrements, SQL Plus à l'appuis) n'aboutis pas en 3 minutes (on atteind un timer). Qqn à une expliquation à ça ? (là, ça commence à craindre un peu pour moi !)

Reply

Marsh Posté le 31-07-2002 à 09:13:00   

Reply

Marsh Posté le 31-07-2002 à 09:38:52    

el_gringo a écrit a écrit :

voila ma situation, pour le moins emmerdante :
Sur une plateforme de test dans ma boite, ma web-app fonctionne bien :
je balance un select qui rend une dizaine de résultats, sur une table contenant en gros 15 000 enregistrements, ça me répond en, mettons 1/4 de secondes.
Quand j'installe mon truc chez le client, ou la table ds laquelle je fais ce select contient en gros 100 millions d'enregistrements, cette même requête (qui là encore devrais rendre une diziaine d'enregistrements, SQL Plus à l'appuis) n'aboutis pas en 3 minutes (on atteind un timer). Qqn à une expliquation à ça ? (là, ça commence à craindre un peu pour moi !)




15000 enregistrements -> 0.25 sec
3 minutes -> 10 800 000 enregistrements
(règle de trois powered  :D )
 
Nan sérieusement, j'ai pas d'idée là.

Reply

Marsh Posté le 31-07-2002 à 09:39:55    

Génial...
 [:yaissev] non, vraiement, merci pour ton intervention !

Reply

Marsh Posté le 31-07-2002 à 09:40:20    

Sinon, personne à de VRAIE idée la dessus ?

Reply

Marsh Posté le 31-07-2002 à 09:42:22    

bin c'est que tes accès ne sont pas optimisés ou que les champs qui sont utilisés pour la sélection ne sont pas indexés. Si tu ouvres SQLPlus ou autre, que tu tapes ta requete et qu'elle met 3 minutes c'est le SYSDBA qu'il faut taper, pas toi :)
 
Sinon c'est quoi cette histoire de Timer?


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 31-07-2002 à 09:46:27    

DarkLord a écrit a écrit :

bin c'est que tes accès ne sont pas optimisés ou que les champs qui sont utilisés pour la sélection ne sont pas indexés. Si tu ouvres SQLPlus ou autre, que tu tapes ta requete et qu'elle met 3 minutes c'est le SYSDBA qu'il faut taper, pas toi :)
 
Sinon c'est quoi cette histoire de Timer?




 
Bah, non, ils sont indexés les champs, justement. sous SQL Plus, la requète abouti en une disaine de secondes.
 
Heu, le timer, c le proxy chez mon client : il bloque une requête ds elle dépasse les 3 minutes. Du coup mes requètes n'aboutissent jammais. Ms j'demandais ça, juste desfois que qqn aurait une idée. si ça s'trouve ça vient d'autre chose.

Reply

Marsh Posté le 31-07-2002 à 09:47:36    

Quelle base
Quel driver
Comment construis tu ta requete
 
Pour SQLPlus tu te connectes avec le meme user/pwd et tu tapes exactement la meme requete ?


Message édité par darklord le 31-07-2002 à 09:47:42

---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 31-07-2002 à 09:51:03    

DarkLord a écrit a écrit :

Quelle base
Quel driver
Comment construis tu ta requete
 
Pour SQLPlus tu te connectes avec le meme user/pwd et tu tapes exactement la meme requete ?




 
Driver :  
Sur Oracle
Avant j'utilisais JdbcOdbc.
J'ai changé pour thin en éspérant que ça changerai qqch : pareil.
ma requète, c'est censé être la même, Disons que je crois que c la même ! (:D)
D'ici qqs heures, je saurais exactement la requête que Oracle à reçu (grâce aux DBA de la boite qui utilise ma servlet)
même user/password.

Reply

Marsh Posté le 31-07-2002 à 09:51:42    

ouais bin vérifie déjà que c'est la meme alors ... Sinon ca sert à rien de spéculer pour rien


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 31-07-2002 à 09:55:52    

DarkLord a écrit a écrit :

ouais bin vérifie déjà que c'est la meme alors ... Sinon ca sert à rien de spéculer pour rien  




 
Ouais, ms c'étais pr une question + précise en fait :
D'après toi, du moment que j'balance une requête SQL via Jdbc, les index sont forcément utilisés, non ? (j'imagine que la gestion des index, ça se fait niveau Oracle, et que ma pitite web-app n'a pas sont mot à dire la dessus !)

Reply

Marsh Posté le 31-07-2002 à 09:55:52   

Reply

Marsh Posté le 31-07-2002 à 10:09:12    

exactement. Par contre si tu utilise JdbcODBC la ca risque d'etre super lent
 
Thin est plus optimisé mais si ca change rien il doit y avoir un problème dans ta query ou la facon dont tu la crées.


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 31-07-2002 à 10:16:35    

DarkLord a écrit a écrit :

exactement. Par contre si tu utilise JdbcODBC la ca risque d'etre super lent
 
Thin est plus optimisé mais si ca change rien il doit y avoir un problème dans ta query ou la facon dont tu la crées.




 
Bah, Odbc ça utilise les index aussi qd même...
Enfin, maintnant, ils utilisent thin, une bonne chose de fait. Par contre en fait, j'regardais, logiquement OCI, ça doit être plus performant, non ? vu que ça utilise des dll natives, alors que thin est pur Java...
 
la façon dont je cré ma query, elle est toute bête. j'concatène, j'concatène ...
En fait, ce topic ma fait penser que le bloquage doit se faire ailleur. Y me reste à trouver où ! :(

Reply

Marsh Posté le 31-07-2002 à 10:37:19    

t'as vérifié l'url(host, nom de base, etc) pour ta connexion? :D

Reply

Marsh Posté le 31-07-2002 à 10:39:56    

tu utilises des prepared statements?

Reply

Marsh Posté le 31-07-2002 à 10:54:14    

--greg-- a écrit a écrit :

tu utilises des prepared statements?




 
...non !
dans ce cas là, t sur que c important ?
y me semblait que c'était dans le cas ou on fait le requète plein de fois, ms là, je fais ma requète qu'une seule fois.

Reply

Marsh Posté le 31-07-2002 à 10:55:03    

--greg-- a écrit a écrit :

t'as vérifié l'url(host, nom de base, etc) pour ta connexion? :D




 
ouais, ms l'url est bonne.
J'accède à leur base de données. Je lis dans d'autres tables. c qd je fais des recherches sur cette table énorme que ça merde !

Reply

Marsh Posté le 31-07-2002 à 11:03:40    

el_gringo a écrit a écrit :

 
 
...non !
dans ce cas là, t sur que c important ?
y me semblait que c'était dans le cas ou on fait le requète plein de fois, ms là, je fais ma requète qu'une seule fois.




ha non, non mais c juste qu'ici on a eu un prob avec des prepared statement qui utilisaient pas les index...
si tu as toad:
lance ta servlet
va dans toad ->tuning/sga trace optimization
tu choisis ton user, puis refresh, tu choisis la requete en question, puis tu regardes dans explain plan

Reply

Marsh Posté le 31-07-2002 à 11:22:56    

--greg-- a écrit a écrit :

 
si tu as toad:
lance ta servlet
va dans toad ->tuning/sga trace optimization
tu choisis ton user, puis refresh, tu choisis la requete en question, puis tu regardes dans explain plan




 
heu... g pas compris !

Reply

Marsh Posté le 31-07-2002 à 11:25:43    

el_gringo a écrit a écrit :

 
 
heu... g pas compris !



bah, tu as toad ou pas?
 
y'a ptet moyen de faire la mm chose avec les outils "par defaut" d'oracle mais ils suxxent des ours, j'ai meme pas envie d'essayer.
en gros tu peux voir avec ce bidule comment ont été executées les requetes qu'oracle à gardé dans son cache

Reply

Marsh Posté le 31-07-2002 à 11:37:16    

--greg-- a écrit a écrit :

bah, tu as toad ou pas?
 
y'a ptet moyen de faire la mm chose avec les outils "par defaut" d'oracle mais ils suxxent des ours, j'ai meme pas envie d'essayer.
en gros tu peux voir avec ce bidule comment ont été executées les requetes qu'oracle à gardé dans son cache




 
Ha, ok
non, g pas ça.
Et puis je suis pas chez les client. ça me parait délicat de leur demander d'utiliser ça ! :(  
merci qd même.

Reply

Marsh Posté le 31-07-2002 à 11:38:16    

el_gringo a écrit a écrit :

 
 
Ha, ok
non, g pas ça.
Et puis je suis pas chez les client. ça me parait délicat de leur demander d'utiliser ça ! :(  
merci qd même.



ben choppe toi free toad, regarde comme ça marche, retourne chez ton client et mate comment ça se passe...
ou bien prend une copie de leur db chez toi ;)

Reply

Marsh Posté le 31-07-2002 à 11:42:25    

--greg-- a écrit a écrit :

ben choppe toi free toad, regarde comme ça marche, retourne chez ton client et mate comment ça se passe...
ou bien prend une copie de leur db chez toi ;)




 
Pour l'instant, c pas prévu que j'aille chez eux.
Prendre une copie de leur bd, en voila une idée qu'elle est bonne.
Vite, je branche mon modem 56K, et je lance le transfer. Je reviens dans un petit millénaire voir si c terminé !:D

Reply

Marsh Posté le 31-07-2002 à 12:12:19    

el_gringo a écrit a écrit :

 
 
Pour l'instant, c pas prévu que j'aille chez eux.
Prendre une copie de leur bd, en voila une idée qu'elle est bonne.
Vite, je branche mon modem 56K, et je lance le transfer. Je reviens dans un petit millénaire voir si c terminé !:D



ben mon pauvre, travailler dans ces conditions...

Reply

Marsh Posté le 31-07-2002 à 12:14:04    

--greg-- a écrit a écrit :

ben mon pauvre, travailler dans ces conditions...
 




 
non, j'déconne, g pas de modem, ms même avec l'ADSL, c comlpètement inenvisageable que je récupère les 100 millions d'enregistrements qu'ils ont dans leurs table !

Reply

Marsh Posté le 31-07-2002 à 12:16:40    

el_gringo a écrit a écrit :

 
 
non, j'déconne, g pas de modem, ms même avec l'ADSL, c comlpètement inenvisageable que je récupère les 100 millions d'enregistrements qu'ils ont dans leurs table !



et les cdrom tu connais pas? :heink:

Reply

Marsh Posté le 31-07-2002 à 12:26:13    

y en a qd meme qui me font rire. Récemment un gars me demandait de l'aide pour une applet qui lis des vidéos en streaming et:
 
- Il a un firewall qui l'empeche de faire des tests avec de serveurs de stream public (genre TF1 ou autre)
- Son boss ne veut pas installer un server de stream dans l'intranet parce que c'est chiant.
 
Faut pas déconner qd meme ...


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 31-07-2002 à 12:29:51    

--greg-- a écrit a écrit :

et les cdrom tu connais pas? :heink:




 
non, ms g l'impression que tu te rends pas bien compte de ce que c'est que 300 millions d'enregistrements (tt à l'heure je disais 100, ms c parce que ça n'avait pas vraiement d'importance). tu crois que ça tient sur 3 cd's ?
ils leur faut des disaines de disques optiques numériques pour stocker tout ça. plusieurs TerraOctets j'imagine, et tu crois que j'vais graver ça sur CD !? non, ms 'faut rester sérieux un peu !

Reply

Marsh Posté le 31-07-2002 à 12:37:58    

el_gringo a écrit a écrit :

 
 
non, ms g l'impression que tu te rends pas bien compte de ce que c'est que 300 millions d'enregistrements (tt à l'heure je disais 100, ms c parce que ça n'avait pas vraiement d'importance). tu crois que ça tient sur 3 cd's ?
ils leur faut des disaines de disques optiques numériques pour stocker tout ça. plusieurs TerraOctets j'imagine, et tu crois que j'vais graver ça sur CD !? non, ms 'faut rester sérieux un peu !



et toi tu crois que tu vas debugger ton appli qui fonctionne pas sur leur bd de merde, à distance, sans copie de la bd ni accès à cette db depuis ton poste!? non, ms 'faut rester sérieux un peu !

Reply

Marsh Posté le 31-07-2002 à 12:46:17    

--greg-- a écrit a écrit :

et toi tu crois que tu vas debugger ton appli qui fonctionne pas sur leur bd de merde, à distance, sans copie de la bd ni accès à cette db depuis ton poste!? non, ms 'faut rester sérieux un peu !
 




 
 :jap: gringo je confirme que t'es lourd!


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 31-07-2002 à 12:47:16    

--greg-- a écrit a écrit :

et toi tu crois que tu vas debugger ton appli qui fonctionne pas sur leur bd de merde, à distance, sans copie de la bd ni accès à cette db depuis ton poste!? non, ms 'faut rester sérieux un peu !
 




 
d!ailleurs tu fais comment pour tester?


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 31-07-2002 à 12:47:22    

DarkLord a écrit a écrit :

 
 
 :jap: gringo je confirme que t'es lourd!



g pas dit ça moi:ange:

Reply

Marsh Posté le 31-07-2002 à 13:58:31    

Mais putain, je fais comme je peux, vous m'faites chier !
J'demande si vous avez pas une idée. J'vous demande pas de me dire comment j'doit bosser. C qd même possible de trouver d'ou vient un bug, sans pouvoir le reproduire. ça m'est arrivé un paquet de fois. Desfois y suffit de réfléchir,ou que qqn ai une idée. D'ou mon post.
Pour l'instant j'essaye de trouver d'ici. Si j'y arrive pas, je rajouterai un log à ma servlet, et je ferai installer ça au client, ou je me déplacerai...
 
Merci...

Reply

Marsh Posté le 31-07-2002 à 14:02:05    

Qui fait chier l'autre franchement gringo?
 
Moi je trouve que tu nous prends particulièrement pour des cons. Tu débarques avec un problème sur lequel on se penche et on prends sur notre temps personnel (et bénévole je le rappelle) pour finalement apprendre que :
 
- Tu ne sais pas si c'est la meme query
- Que tu n'as pas accès à la DB qui te pose problème
- Que tu n'es meme pas sur le site.
 
Je te signale que j'essaie de répondre à tout ce que je peux sur ce forum alors gardes tes insultes pour toi, t'es lourd un point c'est tout. Et ca c'est pas une insulte, c'est une réalité
 
sur ce bye


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 31-07-2002 à 14:09:09    

DarkLord a écrit a écrit :

Qui fait chier l'autre franchement gringo?
 
Moi je trouve que tu nous prends particulièrement pour des cons. Tu débarques avec un problème sur lequel on se penche et on prends sur notre temps personnel (et bénévole je le rappelle) pour finalement apprendre que :
 
- Tu ne sais pas si c'est la meme query
- Que tu n'as pas accès à la DB qui te pose problème
- Que tu n'es meme pas sur le site.
 
Je te signale que j'essaie de répondre à tout ce que je peux sur ce forum alors gardes tes insultes pour toi, t'es lourd un point c'est tout. Et ca c'est pas une insulte, c'est une réalité
 
sur ce bye




 

  • J'ai insulté personne, j'ai juste signalé le sentiment que vous m'inspiriez à cet instant (et que vous m'inspirez encore dans ce topic).
  • Les infos que tu as "apprises" comme tu dis, je les ai données dès le départ. Je vous ai donné les éléments dont je dispose pour résoudre le problème. j'ai demandé si qqn à une idée. Après, si vous avez pas d'idée, c pas grave, du moment que vous me dites pas que je suis lourd, ou autre...
  • J'vous prend pas pour des cons, sinon j'vous demanderai pas votre avis !:D
  • Dark, le "bye", ça veut dire que désomais, tu vas boycotter mes topics ?

Reply

Marsh Posté le 31-07-2002 à 14:12:12    

j'en sais rien gringo. En tout cas tout ca nous détourne du sujet initial qui est un des problèmes que j'ai aussi actuellement. Je dirai que si ca va bien avec 15.000 enregistrements et que ca merde avec plus de données, tu ne dois pas aller voir dans ton code (sauf la requete SQL).
 
Faut voir la config de la BD (y a t il les memes index en dev qu'en prod).
 
Et puis passez de 15.000 à 3000000 c'est pas rien qd meme. et le nombre d'enregistrements retourné (que ce soit 1 ou 50) n'as pas grand chose à voir là dedans je pense. C'est plutot le volume de la base et sa config.
 
Donc téléphone au SYSDBA de la boite, que veux tu que je te dises d'autre.


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 31-07-2002 à 14:20:45    

DarkLord a écrit a écrit :

j'en sais rien gringo. En tout cas tout ca nous détourne du sujet initial qui est un des problèmes que j'ai aussi actuellement. Je dirai que si ca va bien avec 15.000 enregistrements et que ca merde avec plus de données, tu ne dois pas aller voir dans ton code (sauf la requete SQL).
 
Faut voir la config de la BD (y a t il les memes index en dev qu'en prod).
 
Et puis passez de 15.000 à 3000000 c'est pas rien qd meme. et le nombre d'enregistrements retourné (que ce soit 1 ou 50) n'as pas grand chose à voir là dedans je pense. C'est plutot le volume de la base et sa config.
 
Donc téléphone au SYSDBA de la boite, que veux tu que je te dises d'autre.




 
...rien !:D
D'ailleur j'attend plus grand chose de ce topic depuis que t'as répondu à ma question sur la gestion des index de base de données. (et je t'en remercie à nouveau)
Le nombre d'enregistrement retourné, j'pense que ça a une importance qd même. Parce que, si ma requète devait retourner 1 000 000 d'enregistrements, j'comprendrais qu'elle soit un peu longue !:D

Reply

Marsh Posté le 31-07-2002 à 14:24:48    

ouais ne jouons pas avec les mots hein :)


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed