SQL Server 2016 高空閒 CPU 和查詢極慢
我安裝了大約 10 天的 WinServer2012R2 和 SQL Server Express 2016 用於測試。我是這台機器上唯一的使用者。SQL Server 2005 中的 .bak 約為 250MB 的數據庫被還原,沒有任何問題。重新啟動機器後,程序“SQL Server NT - 64 Bit”使用 0% CPU。
在幾分鐘或幾小時後,來自“SQL Server NT - 64 位”的 SSMS CPU 使用率的一些簡單查詢(沒有更新/插入!)突然躍升至 ~15% 並保持在那裡,即使在空閒時也是如此。從那時起,通常需要不到一秒鐘的查詢突然需要 2 分鐘。在實際查詢期間,CPU 使用率不會增加。在這種狀態下,伺服器幾乎無法使用。
然後僅連接 SQL Server Profiler 需要 >30 秒。除了我自己的查詢之外,我只看到來自 SQLServerCEIP / SQLTELEMETRY 的查詢很少,大約每分鐘 3 個。
重新啟動 SQL-Server 並不能解決它。CPU 使用率立即回升至 ~15%。即使在數小時後 SQL-Server 也不會恢復。只有重新啟動整個機器才能解決問題。
由於這是一個“開箱即用”的安裝,只有一個小數據庫,幾乎沒有查詢,只有我作為使用者,可能沒有鎖,許多關於正常 SQL-Server 性能問題的文章都談到了很多不在這裡並不適用。似乎 SQL-Server只想專注於一些內部任務*。*
這是一個具有 2GB RAM 和 2GHz 雙 Xeon 的虛擬機。我也有VS2016,它真的很快。沒有防病毒軟體,甚至沒有 Windows Defender。這裡已經很晚了。明天我會試試 sp_whoisactive。我真的很想知道 SQL-Server 在那裡做什麼……在以前的 1 GB 機器上,相同的數據庫在 SQLServer2005 下執行了 10 年沒有問題……
我不是 SQL-Profiler 專家。我應該從哪裡開始尋找?
由於您的 CPU 使用率很低(而且您的 CPU 設置很好),我會先檢查記憶體壓力。使用 SQL Express 2016,您的記憶體限制為 1410 MB,但您的 VM 只有 2GB。給你的虛擬機多 1GB 記憶體,看看是否有幫助。您還可以檢查 SQL Server 日誌是否將記憶體分頁到文件。
如果這不起作用,請嘗試將數據庫設置 LEGACY_CARDINALITY_ESTIMATION 設置為 ON。參考:在 SQL Server 2016 中將 DB Compatibility Level 130 與舊 CE 一起使用。我們在進行一些升級時遇到了這個問題;結果會因每個數據庫而異。