Précédent   Forum des professionnels en informatique > Bases de données > DB2
DB2 Forum d'entraide technique sur la base de données DB2. Voir aussi -> Rubrique DB2
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/09/2008, 15h42   #1
Membre habitué
 
Avatar de donnadieujulien
 
Développeur informatique
Inscription : avril 2008
Messages : 410
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : avril 2008
Messages : 410
Points : 142
Points : 142
Par défaut Problème d'insertion massive de données

Bonjour,

je fais une insertion massive de données dans trois tables par le biais d'une boucle while

Le problème, c'est que chaque fois entre 500 et 2000, la boucle plante, avec différentes erreurs :

java.sql.SQLException: Resultset is closed
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

ou des fois un truc avec getResultset...

Vu que la boucle fonctionne très bien au début, je me demande d'ou proviennent ces erreurs, surtout que je fonctionne en try/catch, et que je suis sur que ces erreurs ne sont pas déclenchées par ce biais.

Y a pas quelque chose à faire avec les resultset au niveau mémoire? les vider? augmenter le heap?

Ou alors ca vient pas du tout de la? Quelqu'un a une idée?

Merci
donnadieujulien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2008, 15h56   #2
Membre habitué
 
Avatar de donnadieujulien
 
Développeur informatique
Inscription : avril 2008
Messages : 410
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : avril 2008
Messages : 410
Points : 142
Points : 142
Par défaut Ahl lala

J'ai l'impression (je suis pas sur) que ca vient d'une requete SELECT effectuée bon nombre de fois, sur une table vide, donc le resultset est vide.
Ca craint pas normalement non?
donnadieujulien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2008, 16h06   #3
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
Il se pourrait bien que tu atteignes la valeur du timeout assigné pour une requête à la base de données. Du coup, tu planterais. Puisque tu fais des insertions massives, regarde si possible si le moteur SQL ne créerait pas un index temporaire à chaque itération, ce qui pourrait augmenter exponentiellement la durée des requêtes.
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2008, 16h16   #4
Membre habitué
 
Avatar de donnadieujulien
 
Développeur informatique
Inscription : avril 2008
Messages : 410
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : avril 2008
Messages : 410
Points : 142
Points : 142
Par défaut peut etre

donc si je te suis, en faisant un setQueryTimeout(un gros chiffre en ms), sur mon statement, ca devrait résoudre le problème;

Mais ca ne marche pas.

Comment savoir si ce moteur crée un index? et comment le virer?

merci
donnadieujulien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2008, 16h32   #5
Membre habitué
 
Avatar de donnadieujulien
 
Développeur informatique
Inscription : avril 2008
Messages : 410
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : avril 2008
Messages : 410
Points : 142
Points : 142
Par défaut ceci dit

je remarque qu'en ajustant le timeout, la boucle va plus loin, donc ta surement raison, mais je trouve pas grand chose sur le sujet sur la toile.

Help please!
donnadieujulien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2008, 16h35   #6
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
Tu es sur quelle version de DB2 ?
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2008, 16h41   #7
Membre habitué
 
Avatar de donnadieujulien
 
Développeur informatique
Inscription : avril 2008
Messages : 410
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : avril 2008
Messages : 410
Points : 142
Points : 142
Par défaut Version

9.5.0.808
donnadieujulien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2008, 16h59   #8
Membre habitué
 
Avatar de donnadieujulien
 
Développeur informatique
Inscription : avril 2008
Messages : 410
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : avril 2008
Messages : 410
Points : 142
Points : 142
Par défaut processus

J'ai aussi remarqué que le processus db2syscs monte jusqu'à 950mo, et à chaque fois quil dépasse cette limite, ca plante
donnadieujulien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2008, 17h01   #9
Membre habitué
 
Avatar de donnadieujulien
 
Développeur informatique
Inscription : avril 2008
Messages : 410
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : avril 2008
Messages : 410
Points : 142
Points : 142
Par défaut Rect

Non en fait, il monte encore, + de 1Go, c pas très normal ca quand même, un soft de cette trempe n'est pas mieux fait que ca...
donnadieujulien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2008, 21h40   #10
Membre habitué
 
Avatar de donnadieujulien
 
Développeur informatique
Inscription : avril 2008
Messages : 410
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : avril 2008
Messages : 410
Points : 142
Points : 142
Par défaut Après des heures de prises de tête

Bon, j'ai failli escamper le pc par la fenetre, mais j'ai trouvé :

ca venait de ma class watch_connection, qui sert à verifier la connectivité en envoyant une requete neutre sur une table test, syncronisé sur un timer. Et comme j'ai pas fait de thread séparé, et que j'utilise les memes resultset, ca me fesait planter!!!
tout ca pour ca...
merci pour votre aide
@ bientôt
donnadieujulien est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h33.


 
 
 
 
Partenaires

Hébergement Web