Question

  • Qu'est-ce que c'est?
  • Comment implémenter le pooling de connexions avec MS SQL ?
  • Quelles sont les conséquences sur les performances lorsque
    • Exécuter de nombreuses requêtes les unes après les autres (c'est-à-direen utilisant une boucle avec plus de 30 000 itérations appelant une procédure stockée) ?
    • Vous exécutez quelques requêtes qui prennent beaucoup de temps (10+ minutes) ?
  • Existe-t-il des bonnes pratiques ?
Était-ce utile?

La solution

Le regroupement de connexions est un mécanisme permettant de réutiliser les connexions, car l'établissement d'une nouvelle connexion est lent.

Si vous utilisez une chaîne de connexion MSSQL et System.Data.SqlClient, vous l'utilisez déjà - dans .Net, ce contenu est sous le capot la plupart du temps.

Une boucle de 30 000 itérations pourrait être meilleure en tant que curseur côté serveur (recherchez les instructions de curseur T-SQL), en fonction de ce que vous faites à chaque étape en dehors de la procédure.

Les requêtes longues conviennent, mais soyez prudent en les appelant à partir de pages Web, car Asp.Net n'est pas vraiment optimisé pour les longues attentes et certaines connexions seront coupées.

Autres conseils

Un peu plus d'informations sur la mise en commun des connexions...vous l'utilisez déjà avec SqlClient, mais seulement si votre chaîne de connexion est identique pour chaque nouvelle connexion que vous ouvrez.Je crois comprendre que le framework regroupera automatiquement les connexions lorsqu'il le peut, mais si la chaîne de connexion varie même légèrement d'une connexion à l'autre, alors la nouvelle connexion ne proviendra pas du pool - elle est créée à nouveau (c'est donc plus cher ).

Vous pouvez utiliser l'application Performance Monitor avec XP/Vista pour surveiller les connexions SQL et vous verrez assez rapidement si le pooling est utilisé ou non.Recherchez sous la catégorie « Données .NET CLR » » dans l'Analyseur de performances.

J'appuie Keith;si vous appelez une procédure stockée 30 000 fois, vous rencontrez des problèmes bien plus importants que le regroupement de connexions.

Votre question a également reçu une réponse partielle par ce fil.Une recherche l'aurait révélé..La définition du Connection Pooling, dont un Google aurait répondu avec le premier coup étant ce..

Ce qui ne laisserait que les meilleures pratiques, ce qui, je pense, aurait été une bonne question :)

+1 à La réponse de Keith.Il a mis le doigt sur la tête.

Juste un rappel poli de la FAQ :

Vous avez recherché sur Internet avant de poser votre question, et vous venez à nous armés de recherches et d'informations sur votre question ...droite?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top