I work on a client side application developed in c# which has a SQL Server back end.
On the server side we are noticing a decrease in performance as the number of users and the amount of data starts to grow.
We have identified a number of design problems, which have been resolved and have helped improve performance. During our review we also noticed the following. In SQL Server, ASYNC_NETWORK_IO was continuously appearing high in our top 10 wait statistics.
To the best of my knowledge, this can be the result of Row by Row processing on the client side. To verify this, my questions are as follows:
Am I correct in saying, if SQL Server can return a results set quicker than
SqlDataReadercan read it due to RowByRowPro, then the data will be stored in the Network Buffer. If this is full, SQL Server has to wait for space to become available; hence theASYNC_NETWORK_IOwait stat grows. Is this correct?If my statement in question 1 is correct, how much of an overhead can this apply to SQL Server when dealing with other requests outside of the one that is currently waiting?
Lastly, has anyone created a test case that could show the effect of the above?