如何判断 SQL Server 实际使用了多少内核?

21 sql-server sql-server-2008-r2 sql-server-2012

我有两台运行 SQL Server 的服务器。

  • 服务器 1:SQL Server 2008 R2 Express(4 核)
  • 服务器 2:SQL Server 2012 开发版(8 核)

据我所知,SQL Server 2008 R2 Express 应该只使用一个核心。

SQL Server 2012 Developer 版本应使用所有 8 个内核。

但是,如果我在 SQL Server 2008 R2 Express 上的 SQL 查询中运行以下命令,它会显示 4 个内核。

select scheduler_id, cpu_id, status, is_online 
from sys.dm_os_schedulers 
where status = 'VISIBLE ONLINE'
Run Code Online (Sandbox Code Playgroud)

我是否使用正确的命令来衡量使用情况?

小智 8

Express 版受限于 1 个处理器,而不是 1 个核心:

SQL Server 支持指定数量的处理器插槽乘以每个插槽中的逻辑 CPU 数量。例如,就本表而言,以下被视为单个处理器: 单核、超线程处理器,每个插槽具有 2 个逻辑 CPU。带有 2 个逻辑 CPU 的双核处理器。具有 4 个逻辑 CPU 的四核处理器。SQL Server按处理器 插槽许可,而不是按逻辑 CPU许可。

http://msdn.microsoft.com/en-us/library/ms143760(v=sql.105).aspx

是的,可以使用 sys.dm_os_schedulers 确保所有 4 个内核都与调度程序映射。