7
votes

Disposez la connexion ou fermez la connexion

Laquelle des deux méthodes suivantes a une meilleure performance?

DB_Connection_s.Close();


7 commentaires

Disposez-vous fermera aussi bien que les autres ressources.


Je sais que je demande que cette performance sage de tuer la connexion à chaque fois, puis quel est le bénéfice de la cacaë ?!


Parce que je sais quand je viens de fermer la connexion .it reste dans la piscine et utilisé si ce n'était pas actif.


Vous voudrez peut-être réparer cette faute de frappe ...


Fermeture d'une connexion de pool de connexion, que ce soit avec en utilisant ou directement, le retournera à la piscine.


Ensuite, quelle est la principale différence entre proches () et disposer () .Si les deux renvoient la connexion à la piscine.


Le bon sens me dit que disposerait () fermerait, nettoyer et libérer plus de ressources, versus proches () vous permettrait de re-ouvrir plus rapidement? .. Mais je me trompe peut-être.


4 Réponses :


1
votes

Utilisez JETER. À l'intérieur de l'intérieur, il fermera la connexion afin de ne pas avoir besoin de vous inquiéter, cela peut être suffisamment vérifié avec un réflecteur ou similaire en cas de doute.

Quant aux performances, j'irais toujours avec l'utilisation. Windows dispose de diverses caches activées (certainement dans ODBC) de veiller à ce que la réutilisation puisse se produire pour des demandes répétées à la même connexion et que vous ne devriez donc pas avoir vraiment besoin de vous inquiéter de la performance.


2 commentaires

Je sais que je demande que cette performance sage de tuer la connexion à chaque fois, puis quel est le bénéfice de la cacaë ?!


Désolé - mon mauvais, mettant à jour ma réponse



7
votes

Le modèle à l'aide du modèle est meilleur, car le jet d'appel ferme de toute façon la connexion, mais comme bonus, la connexion est fermée même si quelque chose à l'intérieur de l'utilisation passe mal. Par exemple, une exception ou juste un retour qui oblige l'exécution du programme à sortir de l'utilisation de la portée. Avec une utilisation, vous n'avez pas besoin de fermer explicitement la connexion, ce qui rend le code plus lisible. À titre d'autre modèle, la connexion doit être fermée dès que possible. Il n'y a pas d'inconvénient de performance dans la fermeture / l'ouverture de la connexion trop fréquemment, car le pool de connexion optimisera la connexion à la réutilisation de vous.


4 commentaires

Hmmm, cela signifie-t-il que si je dispose de la connexion, il restera dans la piscine.


@Just_name, oui la fermeture et la mise à disposition ne fait pas la différence: une connexion fermée est juste relâchée à la piscine


Et la connexion disposée est également relâchée à la piscine.


@Just_Name Oui Vous avez raison, disposez simplement d'appeler fermer et fermer juste relâcher à la piscine



5
votes

Les connexions sont libérées dans la piscine lorsque vous appelez près ou éliminer la connexion ...

Source = Piscine de la connexion SQL Server (ADO .NET)

Ainsi, supprimez tout souci de la perte de performance causée par des connexions potaculées manquées.
Du point de vue du code, la différence doit être si minimale que le à l'aide de doit toujours être utilisé


2 commentaires

HMMM, cela signifie-t-il que si je dispose de la connexion, il restera dans la piscine.En ce qui est la principale différence entre proches () et éliminer () .Si les deux retournent la connexion à la piscine.


Cet article sur MSDN débats la différence entre ces deux méthodes. Lire la réponse de binarincoder



1
votes

sauf si vous allez appeler .Open () à nouveau quelque temps bientôt,

Utilisez le à l'aide de () {} bloc.

Si vous allez utiliser la même connexion ailleurs, de
Appelez .Close (); puis .Open () et ainsi de suite ...
GARDER VOTRE CLASSE MALITION IDISPOSABLE et jetez la connexion là-bas!

Il prend toujours le temps de créer l'objet de connexion


0 commentaires