关于如何配置最大并行度 (MAXDOP),有很好的一般建议。但是,我的情况很特殊。我的机器上有两个实例。如果我有 16 个核心,我应该如何在它们之间划分 MAXDOP?哪些指标会显示我做出了错误的选择?
我使用的是 SQL Server 2019,并且MAXDOP 的标准建议在 2016 年发生了变化,因此 2016 年 6 月(SQL Server 2016 的发布日期)之前的信息可能不适用。
关于如何配置最大并行度 (MAXDOP),有很好的一般建议。但是,我的情况很特殊。我的机器上有两个实例。如果我有 16 个核心,我应该如何在它们之间划分 MAXDOP?哪些指标会显示我做出了错误的选择?
我使用的是 SQL Server 2019,并且MAXDOP 的标准建议在 2016 年发生了变化,因此 2016 年 6 月(SQL Server 2016 的发布日期)之前的信息可能不适用。
你问错了问题
如果您真的关心两台服务器的性能,那么堆叠实例是一个可怕的错误,因为它们都会争夺相同的资源,除非它们在工作负载方面以某种方式完美匹配,以在相反的时间表上安排繁忙时段。即便如此,从内存角度来看,最初的过渡仍会很艰难。
避免 CPU 争用更重要的是设置 CPU 亲和性,以便每个 SQL Server 都使用单独的 CPU 块。
在 上
StackedMistake1
,你可以运行:然后
StackedMistake2
,你将运行:当然,现在您需要希望您拥有足够的内存来完全支持
StackedMistake
缓冲池、内存授予和其他重要职员和缓存的内存需求。如果两台服务器都不重要,那么除了遵循常规最佳实践外,您设置的任何内容都无关紧要。如果一台服务器比另一台更重要,则使用设置将不太重要的服务器削弱到较低的 CPU 和内存占用,以最大限度地减少资源争用。