Chaîne de connexion SQL Server Traitement Asynchrone=true
Je suis à l'aide .Net 2.0 + SQL Server 2005 Enterprise + VSTS 2008 + C# + ADO.Net pour développer ASP.Net application Web.
Ma question est, si je suis en utilisant Asynchronous Processing=true
avec mode d'authentification SQL Server (pas le mode d'authentification Windows, c'est à dire à l'aide de sa de compte et le mot de passe dans la chaîne de connexion dans le web.config), je me demande si Asynchronous Processing=true
aura un impact sur les performances de mon application web (ou dépend de mon ADO.Net code de modèle d'implémentation/scénario)? Et pourquoi?
OriginalL'auteur George2 | 2009-10-29
Vous devez vous connecter pour publier un commentaire.
Juste avoir l'
Asynchronous Processing=True
dans votre chaîne de connexion tout simplement vous permet d'écrire des requêtes asynchrones - je ne vois pas comment le fait d'avoir ce paramètre dans votre chaîne de connexion doit affecter les performances de votre, si vous n'avez pas à changer quoi que ce soit d'autre.J'espère que vous allez commencer à voir un effet positif sur vos performances lorsque vous commencez à faire asynchrone traitement de vos requêtes de base de données. Mais tout en précisant qu'une option ne devriez pas avoir (positif ou négatif) impact sur votre application.
Marc
aussi loin que je le comprends, ce paramètre permet vous d'utiliser asynchrone ADO.NET requêtes - mais il n'a rien fait automatiquement. Et oui, si vous n'avez pas spécifié de ce paramètre, vous devez PAS être en mesure d'utiliser asynchrone ADO.NET les requêtes.
permet async ADO.NET requêtes - mais à moins que vous en fait écrire ces asynchrone des requêtes, il n'a pas d'effet.
Comme marc_s mensioned l'activation ou la désactivation asynchrone de traitement n'ont pas d'impact à votre système de performance. Même si vous écrivez votre code pour utiliser asynchrone des requêtes, cette requêtes ne serait pas plus rapide que sans les appels asynchrones. Tout ce qu'il fait est de l'exécution de votre requête dans un autre thread, tandis que votre thread actuel reste sensible.
bon point - la requête n'est pas vraiment plus rapide, mais il "sent" plus rapide pour l'utilisateur
OriginalL'auteur
Comme une question de fait, il y a des problèmes de performances lorsque vous activez cette option, voir la ADO.NET 2.0 Exécution d'une Commande Asynchrone (ASYNC) FAQ:
OriginalL'auteur
Début .NET Framework 4.5, le Traitement Asynchrone propriété est ignorée, donc c'est inutile de l'inclure.
Citation:
Pour plus d'informations, reportez-vous aux liens ci-dessous:
OriginalL'auteur
En contradiction avec ce que l'on a accepté la réponse dit, il fait a un impact sur les performances.
Atleast: selon le la documentation msdn.
Dans la pratique, toutefois, je n'étais pas capable de voir la différence dans un SQL 2005 Express scénario .Net 3.5 SP1.
Depuis MSDN docs met en garde sur ce j'ai pensé qu'il serait intéressant de référence pour l'avenir.
OriginalL'auteur
J'ai juste testé les performances de sync appels de base de données avec ASYNC=TRUE et ASYNC=FALSE. J'étais inquiet au sujet de:
Je peux dire que la performance est exactement la même. Je l'ai testé dans Azure web de rôle sous charge élevée et moyenne calculée pour le grand nombre de demandes.
Donc, si votre application utilise différents types de requêtes de base de données (synchronisation et asynchrone), vous pouvez librement définir les
Asynchronous Processing=true
et utiliser cette connexion pour la synchronisation et asynchrone des requêtes. Il sera également garder votre pool de connexion plus petit, je crois.async-await
serait inutile.OriginalL'auteur
Voici un résumé qui contient une classe pour aider à modifier les chaînes de connexion pour s'assurer de leur Traitement Asynchrone=True: https://gist.github.com/2597691
OriginalL'auteur