我正在决定选择哪种处理器,我需要有关“MSSQL 2012 实际上如何与 CPU 核心协同工作?”的信息。
基本上我的问题如下:
- 1 从多连接查询中提取数十亿行的查询将从单个核心执行,还是从可用核心执行?
答案1
我建议你读一本关于 SQL Server 的书 -专业 SQL Server 2012 内部原理和故障排除由 Bolton、Langford、Berry 等人撰写的这本书很不错。
首先,我想告诉你,在设计 SQL 2012 服务器时,你不想让核心数量过多。微软已将其许可模式更改为 SQL Server 2012 上的按核心许可模式,这对 AMD 处理器来说是个坏兆头,因为 AMD 处理器目前更倾向于使用相对较弱的核心,而英特尔处理器通常具有较少的物理核心,但每个核心的性能要好得多。
您可以花费两次与具有更多 AMD 核心的服务器的许可成本相同,或者在具有更少核心的 Intel 服务器上多花一点钱,并节省十万美元的许可费用,最终获得性能更好的服务器。
像您所描述的那样,具有多个连接的大型查询将生成复杂的执行计划,并通过查询优化过程将其分解为任务,然后并行执行。所以是的,这种查询肯定会利用多个处理器/核心提供的并行性。
编辑:当前一代英特尔处理器只是平庸之作更好的在 SQL 2012 工作负载上,AMD 处理器的性能优于 AMD 处理器。请查看 tpc.org 上的 TPC-E 基准测试。AMD 处理器目前根本无法与英特尔处理器的单线程性能相媲美。AMD 处理器通常拥有更多内核,但无法弥补差距。此外,无论制造商是谁,SQL Server 上的大量内核都显示出收益递减。
另外,请阅读我关于此主题的博客文章这里。