Sql-Server
ASYNC_NETWORK_IO 等待類型有什麼可擔心的嗎?
在查看需要很長時間執行的儲存過程列表時,其中一個會導致最多的等待。但是,大部分等待(81%)是 ASYNC_NETWORK_IO,我知道原因:儲存過程傳輸大約 400 MB 的資訊。
在文件中,它指出 ASYNC_NETWORK_IO 的原因是客戶端無法跟上數據洪流,這可能是真的。我不確定如何讓客戶端跟上,因為它所做的只是通過 ADO.NET 呼叫儲存過程,然後只處理數據集。
因此,鑑於此資訊,我是否應該擔心此過程的 ASYNC_NETWORK_IO 等待類型?它實際上對伺服器性能有影響嗎?
附加資訊:
- 我使用的是 SQL Server 2005 的服務包 2。
- 客戶端應用程序與 SQL Server 在同一個盒子上(我知道,我知道……但我對此無能為力)。
正如您所說,這種等待類型表明應用程序沒有跟上 SQL Server。現在這真正的意思是,SQL Server 無法通過網路盡可能快地發送數據。
可能有兩個根本原因:
- 該應用程序的編寫效率低下,並且處理行的速度不夠快。
- 網路已滿。
如果應用程序本身太慢,則不會或不會對其他查詢的性能產生重大影響。另一方面,如果管道太小,其他查詢也不能發送它們的結果而不得不等待。
然而,在後一種情況下,所有連接都在 ASYNC_NETWORK_IO 上等待。您應該能夠清楚地看到這種影響。