Sql-Server
為什麼使用本地數據庫文件對本地實例進行查詢會導致 NETWORK_IO 等待?
我已按照本教程使用擴展事件獲取特定查詢的等待統計資訊,而它正在“飛行中”。雖然本教程提到了索引重建,但我只是從單個表中執行了一個 select 語句
等待(使用教程中的查詢)是
Wait Type Wait Count Wait Time Resource Wait Time Signal Wait Time ------------------- ---------- --------- ------------------ ---------------- NETWORK_IO 693 778 776 2 SOS_SCHEDULER_YIELD 6 0 0 0
我在安裝實例的同一個盒子上執行 SSMS 中的查詢(
.
連接時用作我的伺服器名稱)數據庫的數據文件位於盒子的 C:/ 驅動器上,所以我很困惑為什麼NETWORK_IO
會顯示?作為進一步的測試,我禁用了盒子上的網路適配器並發現了相同的結果(顯然數字略有不同)
我認為
NETWORK_IO
與 SQL Server 將結果返回給 SSMS 有關的想法是否正確?
通常這表現為
ASYNC_NETWORK_IO
擴展事件之外,但是是的,這是 SQL Server 等待呼叫者(在本例中為 SSMS)消耗結果所花費的時間。如果呼叫者很慢(如 SSMS),那麼 SQL Server 必須坐在那裡等待,然後再提供更多行。如果您有一個廣泛的結果集或較大的值,您應該將結果與網格進行比較,並將結果與文本進行比較。但實際上,您不應該根據 SSMS 中的響應時間來計時任何事情,因為它對數據做了不切實際的事情,以及它如何呈現您的應用程序不會做的事情(希望如此)。我在這裡寫過這種等待類型(以及其他 9 種常見的等待類型):