En regardant la liste des procédures stockées qui prennent beaucoup de temps à exécuter, on se démarque comme causant le plus d'attente. Cependant, la plupart de cette attente (81%) est ASYNC_NETWORK_IO et je sais pourquoi: la procédure stockée transfère environ 400 Mo d'informations.
Dans la documentation, il indique que la cause de ASYNC_NETWORK_IO est que le client ne peut pas suivre le flot de données et c'est probablement vrai. Je ne sais pas comment inciter le client à suivre, car il ne fait qu'appeler la procédure stockée via un ADO.NET et ensuite simplement traiter l'ensemble de données.
Donc, étant donné ces informations, dois-je m'inquiéter du type d'attente ASYNC_NETWORK_IO pour cette procédure? Cela a-t-il réellement un effet sur les performances du serveur?
Informations supplémentaires:
Comme vous l'avez dit, ce type d'attente indique que l'application ne suit pas SQL Server. Maintenant, cela signifie vraiment que SQL Server ne peut pas envoyer les données sur le réseau aussi rapidement qu'il le souhaiterait.
Il peut y avoir deux causes sous-jacentes:
Si l'application elle-même est trop lente, il n'y aura pas ou pas d'impact significatif sur les performances des autres requêtes. Si par contre le tube est trop petit, les autres requêtes ne peuvent pas envoyer leurs résultats non plus et doivent attendre.
Dans ce dernier cas cependant, vous auriez toutes les connexions en attente sur ASYNC_NETWORK_IO. Vous devriez pouvoir voir clairement cet impact.