
我在 Amazon EC2 上託管的虛擬化環境中使用 Microsoft SQL Server 2017 Web Edition。根據微軟的SQL Server 2017 的版本和支援的功能頁面中,「單一執行個體使用的最大運算容量 - SQL Server 資料庫引擎」是「僅限於 4 個套接字或 16 個核心中的較小者」。
虛擬環境中的每個 Windows 工作管理員我有 4 個虛擬處理器。但是,當我執行長時間執行的 SQL 查詢時,CPU 使用率最高為 25%。
如果 Web 版的限制是 4 個插槽或 16 個核心中的較小者,那麼我是否應該被允許使用 100% 的虛擬處理器?或者我誤解了 Windows 或 SQL Server 如何對虛擬處理器進行分類?
謝謝
答案1
虛擬環境中的每個 Windows 工作管理員我有 4 個虛擬處理器。但是,當我執行長時間執行的 SQL 查詢時,CPU 使用率最高為 25%。
這意味著即使虛擬機器顯示為每個插槽 1 個核心(這會很糟糕),它仍然可以使用每個許可證的全部 4 個核心。因此,查詢正在執行串行計劃而不是並行計劃。
事實上,它是一個“長時間運行的查詢”並且佔用“25% CPU”,這意味著查詢可能寫得不好或模式設計不符合標準。無論哪種方式,透過並行計劃運行它(如果給定查詢甚至可能的話)只會使伺服器具有比正常情況更高的 CPU 使用率。
最好查看查詢、模式和支援對象並對其進行調整。