我怎樣才能看到 sql server 正在做什麼?
因為我是開發人員,所以我是開發機器上 SqlServer 的使用者,我很少看到伺服器上發生了什麼。
但是在這個項目中,客戶端還管理它自己的生產 SqlServer,有時我們會看到機器“忙”。
而忙碌的意思是它在 100% CPU 下超過 30 秒。所以首先,這是正常的行為,當伺服器正常執行時,它有時會將所有核心設置為 100%?
正如我們(作為非 sql 專家)得出的結論,它不是,我們想檢查“sql server 在做什麼?”
可能有 6 個應用程序在同一台伺服器上執行,有些每 5 分鐘執行一次,一個是連續連接的網站,一個是每分鐘計算一次數據等。
那麼當 cpu 處於 100% 時,我們如何檢查是哪個應用程序導致了這種情況呢?
我們當然可以使用 sql profiler 來檢查發送到 sql server 的內容,但是其中包含太多行,我們不知道從哪裡開始分析。
有沒有辦法讓我們開始?
(這就像您有時在家中的桌面上遇到的事情:您什麼都不做,cpu 處於 50% 並且您聽到硬碟驅動器嘎嘎作響,您會想:您在做什麼!?)
該伺服器是 2 台機器集群中的一台(一台已使用,一台用於故障轉移),均為四核,具有 16GB 的 RAM。
所以首先,這是正常的行為,當伺服器正常執行時,它有時會將所有核心設置為 100%?
作為開發人員,您應該並且應該知道唯一的答案是“取決於”。一個程序是否有可能在很長一段時間內耗盡所有 CPU - 你猜怎麼著,答案是肯定的。
所以,問題主要是 - SQL Server 在那裡做什麼(並且有工具可以找到它)。連接,看看哪些 SQL 語句執行了多長時間。
那麼當 cpu 處於 100% 時,我們如何檢查是哪個應用程序導致了這種情況呢?
使用 SA 帳戶連接,查看動態視圖以了解 SQL Server 目前正在忙於處理什麼。可能附上痕跡。
但首先要確保它是 SQL Server。SQL Server 很少受 CPU 限制。第一個瓶頸通常是磁碟子系統。