Précédent   Forum des professionnels en informatique > Java > Général Java > JDBC
JDBC Forum d'entraide sur l'API JDBC (Java Database Connectivity) et l'accès aux bases de données. Avant de poster -> FAQ JDBC
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 12/12/2011, 19h20   #1
Membre émérite
 
Avatar de Alkhan
 
Homme Sébastien Tahier
Inscription : octobre 2006
Messages : 705
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Tahier
Localisation : France

Informations forums :
Inscription : octobre 2006
Messages : 705
Points : 959
Points : 959
Par défaut Problème mémoire Oracle

bonjour à tous,

j'ai un problème important avec le pilote JDBC d'Oracle. Je parcours une table de plusieurs millions d'enregistrement et lorsque j'utilise un ResultSet de type ResultSet.TYPE_SCROLL_INSENSITIVE.
Le problème existe que je sois avec un Statement ou un PreparedStatement et aussi avec un ResultSet de type ResultSet.TYPE_SCROLL_SENSITIVE.

Exemple :
Code :
1
2
3
4
5
6
 
Connection connection = DriverManager.getConnection(url, user, password);
Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet rs = statement.executeQuery("SELECT * FROM MaTable");
while (rs.next()) {
}
J'imagine que le driver met en cache plus d'informations avec ce type de ResultSet mais je ne comprend pas pourquoi il va jusqu'au Heap Space !
Quelqu'un aurait il déjà été confronté au problème ?
Y a t'il un moyen de le résoudre ?

Merci d'avance
__________________
Il n'y a pas de problème, il n'y a que des solutions.
Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

Mes Articles : Mon premier article est sur le language D
Alkhan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 21h50   #2
Modérateur
 
Inscription : août 2006
Messages : 2 848
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 2 848
Points : 2 950
Points : 2 950
Ben tu essaies de ramener trop d'informations, donc ça pète.
Essaie de filtrer ta requête, ou alors, utilise la pagination, tu ramènes un certain nombre d'éléments à chaque itération, mais tu ne gardes jamais tout en mémoire.
fr1man est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 23h40   #3
Modérateur
 
Avatar de tchize_
 
Homme
Responsable de service informatique
Inscription : avril 2007
Messages : 16 196
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : Belgique

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Service public

Informations forums :
Inscription : avril 2007
Messages : 16 196
Points : 25 343
Points : 25 343
Envoyer un message via MSN à tchize_ Envoyer un message via Skype™ à tchize_
Citation:
Envoyé par Alkhan Voir le message
plusieurs millions d'enregistrement
La réponse est dans la question. à 1k l'enregistement (borne vachement basse) il te faudra plusieurs Giga de ram pour stocker ces données.
__________________
⥀⥁ Чиз faq java, cours java, javadoc. Pensez à et
"Votre génitrice tute des pédoncules au pandémonium" (le conjurateur, 1973)
tchize_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 17h43   #4
Membre émérite
 
Avatar de Alkhan
 
Homme Sébastien Tahier
Inscription : octobre 2006
Messages : 705
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Tahier
Localisation : France

Informations forums :
Inscription : octobre 2006
Messages : 705
Points : 959
Points : 959
Merci pour vos réponse !

D'après ce que vous me dite, il est donc impossible de parcourir plusieurs millions d'enregistrements grâce à une seule requête !

Citation:
Envoyé par fr1man Voir le message
...ou alors, utilise la pagination, tu ramènes un certain nombre d'éléments à chaque itération ...
Le principe de la pagination, si je ne me trompe pas est que je suis obligé :
- faire une boucle correspondant à chaque pages
- lancer une requête pour les enregistrement de la page
- boucler sur les enregistrements de la page

Et si je ne peux pas faire ça je n'est aucune autre possibilité, pour éviter que le driver n'explose la mémoire ?
__________________
Il n'y a pas de problème, il n'y a que des solutions.
Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

Mes Articles : Mon premier article est sur le language D
Alkhan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 18h54   #5
Modérateur
 
Avatar de tchize_
 
Homme
Responsable de service informatique
Inscription : avril 2007
Messages : 16 196
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : Belgique

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Service public

Informations forums :
Inscription : avril 2007
Messages : 16 196
Points : 25 343
Points : 25 343
Envoyer un message via MSN à tchize_ Envoyer un message via Skype™ à tchize_
ce qui n'est pas possible, c'est de le faire en demandant au driver d'avoir un resultset qu'on peux explorer (TYPE_SCROLL_INSENSITIVE, CONCUR_UPDATABLE), car ça nécessite que le driver garde en mémoire au fur et à mesure ce qui arrive du serveur.

Tu peux bien sur parcourir tes millions d'enregistrement, ce que tu ne peux pas faire c'est les conserver tous en mémoire
__________________
⥀⥁ Чиз faq java, cours java, javadoc. Pensez à et
"Votre génitrice tute des pédoncules au pandémonium" (le conjurateur, 1973)
tchize_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2011, 09h21   #6
Membre émérite
 
Avatar de Alkhan
 
Homme Sébastien Tahier
Inscription : octobre 2006
Messages : 705
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Tahier
Localisation : France

Informations forums :
Inscription : octobre 2006
Messages : 705
Points : 959
Points : 959
Merci pour ces réponses !

Je vais me débrouiller différemment.
__________________
Il n'y a pas de problème, il n'y a que des solutions.
Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

Mes Articles : Mon premier article est sur le language D
Alkhan 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 03h14.


 
 
 
 
Partenaires

Hébergement Web