伺服器上的所有查詢都變慢了,cpu 正常,可用記憶體充足但 SQL 使用很少
前幾天我登錄到我們的伺服器,看到 SQL 正在使用 100% 的 cpu,並且伺服器速度慢到爬行。我決定停止 SQL 並重新啟動它。但是,它拒絕正常停止並停止響應。在玩弄它之後,我最終讓它重新啟動並再次執行。
但是,所有針對它的查詢現在都慢了 10-30 倍,並且在某些情況下會影響伺服器的性能。
我一直在尋找解決方案,但我看不到任何解決 SQL 執行緩慢的全球性問題的方法。CPU 使用率沒有異常,並且有大量可用記憶體——事實上,SQL 只使用了大約 300mb,而以前它曾經是大約 20gb,這可能是問題的一部分。
我創建了一個全新的數據庫,當我嘗試填充它時,它比以前慢了大約 30 倍,並且伺服器變得非常無響應。
會不會是一些簡單的需要重置的東西,或者是之前壞了之後需要進行的修復?
當您試圖找出 SQL Server 執行緩慢的原因時,請先檢查以下事項:
- 在任務管理器中,CPU 使用者實際上是 sqlserver.exe,還是其他?如果是其他問題,請先排除故障。
- 如果它實際上是 sqlserver.exe,請檢查目前正在執行的查詢。最簡單的方法是使用Adam Machanic 出色的 sp_WhoIsActive。這是執行它的方法。
- 檢查伺服器的等待統計資訊。我最喜歡的方法是使用sp_AskBrent,這是我的儲存過程,它需要 5 秒的等待統計樣本並檢查一些診斷查詢。
有關更多詳細資訊,請查看以下資源:
- 我們的急救人員工具包- 要查看的 PDF 清單
- 免費的 SQL Server 故障排除書- 我喜歡這本書,因為它是一種問題/解決方法。您無需通讀整篇文章即可從中獲得價值——只需將其放在您的虛擬書架上,當您遇到 CPU 問題時,請轉到 CPU 章節。
我建議不要重新啟動 SQL Server,因為這樣您會失去所有收集的統計資訊,並且在重新啟動後,您將無法找出導致使用 DMV 緩慢的原因。我會問你多久更新一次統計數據,重建索引。您是否嘗試找出導致緩慢的原因。不要只是在灌木叢中擊中箭頭,首先要深入了解實際上的瓶頸是查詢或索引不佳,或者可能是資源緊縮。關於任務管理器中的 300MB 記憶體,您不應該參考任務管理器來了解 SQL Server 記憶體使用情況,如果 SQL Server 服務帳戶具有 Locked pages in memory 權限,則它不會顯示正確的值。下面是關於在 SQL Server 中解決性能問題的白皮書 http://technet.microsoft.com/en-us/library/dd672789%28v=sql.100%29.aspx
我建議您查看等待統計數據並進行分析。它可以讓您清楚地了解導致瓶頸的原因