Fermer la connexion ou laisser ouvert ?

Akita95 Messages postés 23 Date d'inscription dimanche 13 mars 2005 Statut Membre Dernière intervention 30 juillet 2007 - 19 nov. 2006 à 17:12
cs_Malkuth Messages postés 268 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 24 avril 2013 - 21 nov. 2006 à 14:11
Bonjour à tous,

Je développe actuellement un programme utilisant une connexion ADO.

Ma question est assez simple : Vaut-il mieux ouvrir et fermer une connexion a chaque requete ou laisser la connexion ouverte pendant toute l'éxécution du programme ?

Je parle surtout au niveau de l'état du réseaux et des répercution du programme sur celui-ci.

Merci de donner des arguments c'est important pour que je fasse mes choix :-)

Merci d'avance à tous ceux qui m'aideront !!

A+++

Akita

4 réponses

cs_kazer04 Messages postés 182 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 14 mars 2011
19 nov. 2006 à 17:45
selon moi je trouve qu'il es mieux de l'ouvrivre pour l'execution d'une requette et et de la fermer apres ton execution c'est plus sur et depense moin de resource
0
rytta87 Messages postés 26 Date d'inscription lundi 3 juillet 2006 Statut Membre Dernière intervention 5 mars 2009
19 nov. 2006 à 18:01
Salut,


Il vaut mieux que tu ouvres la connection et que tu la fermes à chaque exécution pour libérer la mémoire et ne pas ralentir ton PC.


Bonne chance.
0
cs_Malkuth Messages postés 268 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 24 avril 2013 4
21 nov. 2006 à 14:10
Salut.

Je ne suis pas du même avis, le choix va être fonction de l'activité sur la base de donnée :

Si tu as des requette fréquentes ouvrir et fermer la connection va consommer de la ressource processeur, ainsi que de la bande passante (obliger de renégocier la connection à chaque fois) et en plus tu vas perdre énormément de temps), et on peut aussi noté que ce problème se retrouverat autant du coté serveur que client, maintenir la connection ouverte ne reclamme qu'un peu de mémoire (et aujourd'hui je suis pas sur que se soit un gros problème).

Si tu utilise un cache local avec des mise à jours peu fréquente, (ex Toutes les 10 secondes), alors là effectivement tu peux ouvrir, faire les mises à jour et refermer ensuite.

Trés franchement test les deux solutions et tu veras qu'un pc maintient la connection pour un faible cout en ressource (C'est rien par rapport a emul par exemple qui peu maintenir une centaine de connection simultanément,et emule tourne chez moi sur un pc à 1Ghz et 256Mo de RAM).

pour t'assuré de ce que je viens de dire fais les tests suivants :

Test 1 :

'Récupérer la date de début
For i as integer = 0 to 1000
   'Connection à la base de donnée,
   'Execution d'une requette
   'Fermeture de la connexion
   'Attendre 10 ms
NEXT
'Récupérer la date de fin

Test 2 :

'Récupérer la date de début
'Connection à la base de donnée,
For i as integer = 0 to 1000
   'Execution d'une requette
   'Attendre 10 ms
NEXT
'Fermeture de la connexion
'Récupérer la date de fin

Attention utilise strictement les même code pour les blocks de même nom des tests(y compris les déclaration de variable et surtout l'initialisation de celle ci) car dans un vrai prog tu sera obliger de recréer l'objet connection dans chaque procédure.

Pendant les test regarde les débits sur le réseau(éteint tous les prog qui peuvent utiliser le réseau bien sur),

Compare ensuite les durés d'éxécution, la diférence devrait être flagrante,
Compare le débit réseau moyen * durée d'éxecution et tu veras dans quel proportion l'une ou l'autre des méthode s'est réveler la moins gourmande de ce coté.
Vérifie pendant l'éxécution les valeurs d'utilisation processeur du programme,
Et pour finir regarde aussi les valeurs d'utilisation de mémoire(en minimizant le programme dans la barre des tâches).

Le choix d'une solution ou d'une autre ne peut pas être définie dans l'absolue mais au cas par cas. mais dans le doute une connection ouverte une seule fois, c'est plutôt meilleur.

Si tu fais les tests, tient nous au courrant...

Bon courage.
0
cs_Malkuth Messages postés 268 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 24 avril 2013 4
21 nov. 2006 à 14:11
PS : Le problème se complique si tu fais un programme multithread.... mais bon on vas pas chipoter.
0
Rejoignez-nous