2009-08-25 66 views
9

什麼會導致Management Studio中的查詢被掛起?SQL Activity Monitor中的掛起狀態

  1. 我從一個表(它有1100萬行)執行一個簡單的選擇頂部60000,並且結果在一秒或兩秒內返回。
  2. 我將查詢更改爲最高70000,結果最多需要40分鐘。

通過在另一個相關問題上進行一些搜索,我發現有人使用DBCC FREEPROCCACHE來修復它。

  1. 我運行DBCC FREEPROCCACHE,然後重做查詢70000,它似乎工作。

然而,問題仍然有不同的查詢時發生。

  1. 我增加到90000,或者如果我嘗試使用[Right-> Open Table]打開表格,它會拉動大約8000條記錄並停止。

檢查我在執行打開表時的活動日誌顯示會話已被掛起,等待類型爲「Async_Network_IO」。對於運行選擇90000的會話,狀態爲「睡眠」,這與上面選擇的70000查詢的狀態相同,但它在45分鐘內返回。我很奇怪狀態顯示「Sleeping」,並且它似乎沒有改變爲「Runable」(我的活動監視器刷新了30秒)。

其他注意事項:

  • 我不是同時運行打開表,並在同一時間選擇90000。所有查詢都一次完成一個。
  • 我正在運行32位SQL Server 2005 SP2 CU9。我嘗試升級到SP3,但遇到安裝失敗。在我嘗試升級之前發生了這些問題。
  • 服務器設置是主動/主動集羣問題發生在任一節點上,而另一個實例沒有此問題。
  • 我有〜20其他數據庫在同一服務器上的實例,但只有這一個數據庫正在看到這個問題。
  • 該數據庫變得相當大。目前在76756.19MB。數據文件是11513MB。
  • 我使用遠程桌面在服務器上本地登錄。

回答

9

等待類型「Async_Network_IO」意味着它等待客戶端檢索結果集,因爲SQL Server的網絡緩衝區已滿。爲什麼你的客戶沒有及時收集數據我不能說。

它可能發生的另一種情況是與鏈接服務器當SQL Server查詢遠程表,在這種情況下,SQL Server正在等待遠程服務器響應。

東西值得看的是病毒掃描程序,如果他們被監控的網絡連接有時他們可以得到滯後,其經常被他們佔用所有的CPU明顯。

2

暫停表示它正在等待某個資源,並在獲取其資源時恢復。從你回退的大小來看,你似乎處於OLAP類型的查詢中。

嘗試以下操作:

  1. 使用NOLOCK或查詢的頂部設置的事務隔離級別
  2. 檢查你的執行計劃和調整查詢更有效率
相關問題