SQL Server-DMV 初探

進來不斷的進行數據的清除和整理,結果一個過程花費了48個小時還沒有結果。按照我們任務的規模,通常可以在幾個小時內完成。

考察了內存 CPU負載都不高。問題究竟在哪裏呢?

決定考察下動態管理視圖,首先看了sys.dm_od_tasks。

使用sessionid做過濾,看到了9個task,檢查了下文檔明白了,因爲機器上有8個CPU,外加一個協調的task。

在這個視圖裏,還看到所有的task都處於suspended狀態,顯然所有任務都被阻塞了。

 

那麼她們都在等待什麼呢?

於是我查了下sys.dm_os_waiting_tasks視圖。它可以告訴我所有等待中的task在幹什麼。還是以session_id爲filter。

看到協調進程的等待類型是PAGEIOLATCH_EX,資源描述是16:1:8094245,說在等着給某個page加鎖,並把它獨到內存中。

而其他的8個task均被該task所阻塞。

 

聯繫我們的sql是在做update操作,到此,我們已經清楚了,協調進程首先給頁面加鎖,讀取到內存中,其他的工作task才能進行update操作。因此所有的花費均在update之上。

看來我們需要檢查下是否需要這樣的update了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章