Précédent   Forum du club des développeurs et IT Pro > Général Développement > Langages de programmation
Langages de programmation Forum général sur les langages de programmation, sur la POO, opinions, choix, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 30/11/2012, 20h34   #1
lu-k92
Invité de passage
 
Homme Lucas
Inscription : octobre 2012
Messages : 2
Détails du profil
Informations personnelles :
Nom : Homme Lucas
Localisation : Suisse

Informations forums :
Inscription : octobre 2012
Messages : 2
Points : 1
Points : 1
Par défaut Comment bien gérer une connexion à un serveur MySQL

Bonjour,

je développe une application en C# qui accède fréquemment à un serveur MySQL.
Actuellement, j'ouvre la connexion vers le serveur lors du démarrage de l'applic, et je la ferme lorsque je quitte mon applic.

J'aimerai savoir si c'est la bonne méthode que j'utilise ou pas. Je me pose la question car si l'applic reste ouverte plusieurs heures (même si elle est pas utilisée) la connexion le sera aussi...

J'ai testé en ouvrant la connexion juste avant de faire une requête vers la bdd et en la fermant dès que la requête a été faite, mais c'est beaucoup trop lent à l'utilisation.

Merci d'avance pour vos conseils
lu-k92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2012, 23h45   #2
Graffito
Expert Confirmé Sénior
 
Avatar de Graffito
 
Inscription : janvier 2006
Messages : 5 390
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 5 390
Points : 6 034
Points : 6 034
Citation:
J'aimerai savoir si c'est la bonne méthode
Nous n'avons jamais eu de souci avec cette méthode dans un environnement réseau local.
__________________
" Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson
Graffito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2012, 17h44   #3
sevyc64
Modérateur
 
Avatar de sevyc64
 
Homme Yves
Développeur informatique
Inscription : janvier 2007
Messages : 5 278
Détails du profil
Informations personnelles :
Nom : Homme Yves
Âge : 40
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : janvier 2007
Messages : 5 278
Points : 11 951
Points : 11 951
Citation:
Envoyé par lu-k92 Voir le message
J'aimerai savoir si c'est la bonne méthode que j'utilise ou pas.
Non, et Oui !

Il est totalement inutile de garder une connexion ouverte si tu ne l'utilise pas. Cela consomme des ressources pour rien, non seulement sur ta machine mais aussi sur le serveur.
Sans compter les phénomènes de coupures de réseau ou de renouvellement de bail IP, ou autres, qui peuvent parfois engendrer des problèmes.

L'autre solution, d'ouvrir la connexion à chaque requete et de la refermer ensuite, n'est pas forcément meilleur dans certains cas. C'est, par exemple totalement contre productif lorsque tu as une série de requêtes successives à faire.

Comme bien souvent, l'idéal est entre les deux et dépend de ce que fait ton programme.

Prenons l'exemple d'un process qui va avoir besoin d'une série de requêtes pour afficher des données à l'utilisateur et attendre une action de sa part. Il peut être judicieux d'ouvrir et garder la connexion ouverte durant toute la série de requête. Par contre, en attendant la réaction de l'utilisateur, qui de toute façon mettra au mieux quelques secondes à arriver, au pire plusieurs heures, il est inutile de conserver cette connexion.
Donc on ouvre, on requete plusieurs fois, on ferme, on affiche et on attend. On ré-ouvrira une autre connexion plus tard si nécessaire.

Bien sur, tout cela est, ensuite, à nuancer en fonction des besoins et exigences de tes process. Il n'y a pas de règles universelles en la matière, si ce n'est qu'il est inutile de conserver une connexion qui ne sert pas, il faut s'adapter à chaque cas.
__________________
--- Sevyc64 ---

Parce que le partage est notre force, la connaissance sera notre victoire
sevyc64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2012, 23h10   #4
lu-k92
Invité de passage
 
Homme Lucas
Inscription : octobre 2012
Messages : 2
Détails du profil
Informations personnelles :
Nom : Homme Lucas
Localisation : Suisse

Informations forums :
Inscription : octobre 2012
Messages : 2
Points : 1
Points : 1
Merci pour ces conseils et explications.

Je vais étudier la chose et voir pour trouver un bon compromis afin de gérer au mieux la connexion au serveur.
lu-k92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2012, 12h07   #5
Graffito
Expert Confirmé Sénior
 
Avatar de Graffito
 
Inscription : janvier 2006
Messages : 5 390
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 5 390
Points : 6 034
Points : 6 034
Citation:
Leaving a connection open for a while is fine, as long as:
  1. you don't have so many concurrently idle connections that you hit the MySQL connection limit;
  2. you don't leave it open for hours without doing anything. The default MySQL connection wait_timeout is 8 hours; leave a connection inactive for that long and when you next come to use it you'll get a “MySQL server has gone away” error.
__________________
" Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson
Graffito est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 23h22.


 
 
 
 
Partenaires

Hébergement Web