
我正在開發運行 SQL Server Express(作為 Sage Line 50 Manufacturing 的一部分)的虛擬機器。詳情如下圖所示:
實體伺服器(主機)
- Intel Xeon 四核心 2.1GHz
- 4GB RAM
- VMDK 映像儲存在 RAID-5 500GB SATA 磁碟機 (7200RPM) 上
- 執行 Ubuntu 10.04 Server 64 位元
- VMware Server 2
虛擬機
- Windows Small Business Server 2003
- 分配 2 個 vCPU 和 2GB RAM
- 使用 100GB 預先分配平面 VMDK 文件
我遇到的問題是 SQL Server 中運行的進程是 CPU 密集型的。在我們遷移到虛擬機器的舊實體伺服器上,這將利用兩個 CPU 核心,因此 sqlserver.exe 進程將在每個 CPU 核心上 100% 運行。在虛擬機器上,它似乎只使用兩個 CPU 核心之一,這意味著進程運行速度要慢得多。
問題
有沒有辦法力量SQL Server(sqlserver.exe 進程)使用兩個 CPU 核心,並在它們之間分配負載?這是一個需要更改以允許進程使用兩個核心的 VMware 設定嗎?
答案1
我對虛擬機器上的 MS SQL Express 資料庫沒有太多經驗,但我認為您剛剛遇到了 MS SQL Express 版本的硬體限制。
我假設你的實體伺服器有 1 個 2 核心的 cpu。 MS SQL Express 2008(我想 2005 也是一樣)只支援一個實體 CPU,但支援多個核心。
VM 將每個 vCPU 識別為單一 CPU,而不是附加核心。因此sqlserver.exe進程僅限於1個vCPU。
答案2
在vSphere 中(這可能不適用於VMware 伺服器,但可能對偶然發現這個答案的人有用),您可以更改提供給虛擬機器的“每個插槽的核心數”,以準確反映多核心(或超線程) )CPU。