现在或可能正在开发一种方法来告诉 SQL Server 留在一个 NUMA 节点内,无论是在服务器范围内还是在查询级别?基本上与 MAXDOP 功能相同,但 MAXNUMA?
现在,除非我完全错过它,否则当查询并行时,它可以使用它可以看到的所有处理器。只是想知道是否有办法将其限制为一个或两个或“x”个 NUMA 节点。我可能真的不希望我的查询分布在 80 多个逻辑处理器上 :)
这主要是一个好奇心,而不是一个“帮我打破我坏掉的东西”的问题。
现在或可能正在开发一种方法来告诉 SQL Server 留在一个 NUMA 节点内,无论是在服务器范围内还是在查询级别?基本上与 MAXDOP 功能相同,但 MAXNUMA?
现在,除非我完全错过它,否则当查询并行时,它可以使用它可以看到的所有处理器。只是想知道是否有办法将其限制为一个或两个或“x”个 NUMA 节点。我可能真的不希望我的查询分布在 80 多个逻辑处理器上 :)
这主要是一个好奇心,而不是一个“帮我打破我坏掉的东西”的问题。
您可以使用 SQL Server 的“处理器关联”来将处理限制在单个 NUMA 节点。有关详细信息,请参阅此 MSDN 页面上的命令
<process affinity>
部分。ALTER SERVER CONFIGURATION
默认情况下,如果查询是并行的,其中 MAXDOP <= 每个 NUMA 节点的核心数,则 SQL Server 会尝试将查询处理包含在给定的 NUMA 节点内。这里的指示是将MAXDOP配置为一个合理的值;肯定不会超过每个 NUMA 节点的核心数。有大量资源可以帮助计算合理的 MAXDOP;包括我的问题的答案。
没有提示这样做,但可以将 SQL Server 配置为执行您描述的操作。有关详细信息,请参阅Microsoft SQL Server 客户服务和支持团队的SQL Server 并行查询放置决策逻辑。下表转载自该帖子:
此外,来自同一博客上的NUMA Connection Affinity 和 Parallel Queries :