IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

JDBC : bonne utilisation?


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut JDBC : bonne utilisation?
    Bonjour,

    Pour un programme assez largement diffusé (plus de 1000 personnes) qui utilise une base de données :
    Au démarrage du programme, il se connecte à la base:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    try {
                Class.forName("com.mysql.jdbc.Driver");
                connex = DriverManager.getConnection("jdbc:mysql://" + host + "/" + database, login, pass);
            } catch(ClassNotFoundException e) {
                throw new SQLException(e.getMessage());
            }
    Pendant l'execution du programme, il fait parfois des demandes à la base...

    Vaut-il mieux rouvrir et fermer la db à chaque requête?
    (surtout que j'ai un SQL Too Many connections)

  2. #2
    Membre chevronné Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Par défaut
    SQL Too Many connections ??? bizarre .. il me semblait qu'Oracle acceptait jusqu'à 100 connexion et mysql un peu moins .... 70 ? 50 peut-être ...
    Au bout de combien de connexions ça plante ?


    Dans tous les cas, si tu ne peux pas ouvrir toutes les connexions de tes clients, la question ne se pose pas : ferme les autant que tu peux ... au risque de ralentir ton application (un peu ... sur les machines modernes le temps est négligeable : jusqu'à 1 ou 2 secondes sur un réseau 10/100)

    Si tu pouvais supporter toutes les connexions, tu pourrais faire le choix d'économiser du temps d'exécution et de sacrifier de la mémoire vive en gardant ouverte la connexion à la base.

  3. #3
    Membre éprouvé Avatar de nicgando
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 128
    Par défaut
    Si tu as 1000 clients qui gardent tous une connections tu as potentiellement 1000 connections simultanées; qui la pluspart du temps ne font rien apparemment.

    Je pense qu'il faudrait que tu t'orientes vers un pool de connections centralisées

  4. #4
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par nicgando
    Si tu as 1000 clients qui gardent tous une connections tu as potentiellement 1000 connections simultanées; qui la pluspart du temps ne font rien apparemment.

    Je pense qu'il faudrait que tu t'orientes vers un pool de connections centralisées
    Si je crées une connection et la ferme à chaque requête, c correct?

  5. #5
    Membre chevronné Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Par défaut
    Dans l'absolu, ça reste faux : tu pourrais avoir 1000 requêtes lancées au même moment.

    Je ne connais pas la solution dont parles nicgando, mais ça sonne bien

  6. #6
    Membre éprouvé Avatar de nicgando
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 128
    Par défaut
    En fait tu mets un serveur d'application (JBoss par exemple) tu crées une source de données. Depuis ton appli tu récupères au besoin une connection (via JNDI, c'est un peu comme RMI si tu ne connais pas)


    Concernant la possibilité d'avoir 1000 requêtes d'un coup tu peux gérer le fait que le client attende le temps qu'une connection se libère ou bien faire un timeout, ...

    Cela peut être assez compliqué à expliquer ici mais tu peux trouver de bonnes doc et exemples sur le net.
    Un exemple http://wiki.jboss.org/wiki/Wiki.jsp?...figDataSources

Discussions similaires

  1. de la bonne utilisation de const
    Par gangsoleil dans le forum C
    Réponses: 2
    Dernier message: 14/09/2005, 15h44
  2. [Singleton] En faire une bonne utilisation
    Par Koubi dans le forum Langage
    Réponses: 6
    Dernier message: 01/09/2005, 17h52
  3. [C#] La bonne utilisation des WinForms (ouverture-Fermeture)
    Par Harry dans le forum Windows Forms
    Réponses: 28
    Dernier message: 03/08/2005, 11h39
  4. La bonne utilisation de TIBTransaction
    Par jibe74 dans le forum Connexion aux bases de données
    Réponses: 15
    Dernier message: 29/01/2005, 16h18
  5. [Tomcat][sleep]De la bonne utilisation du sleep??
    Par Titom dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 11/01/2005, 10h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo