一直在与我公司的应用程序供应商就并行性进行辩论。他们坚持认为 Maxdop = 1 对应用程序/数据库有显着的性能改进,但他们绝对没有提供任何证据。
我测试了各种 DOP/CT 设置,发现在使用 Maxdop 4(8 个超线程内核)和 CT 150 时,自动化测试的整体性能提高了 28%。
供应商的 DBA 最近说:“MSSQL 的内部进程存在一个问题,即使 DOP 为‘1’,MSSQL 的内部进程也能使用这个值,在使用它的 MSSQL 服务器中有低于 51 的 SPID,幽灵清理等这个。”
我对此进行了研究,尽管信息很少,但 Paul Randall 至少说 ghost 清理始终是单线程的,所以显然供应商的 dba 不正确?
当 Maxdop = 1 时,对 CT 的影响有什么想法吗?
说
MAXDOP=1
总是有益是完全错误的说法。MAXDOP 值应根据 SQL Server CPU 核心配置进行设置,然后进行一轮良好的测试。据我所知,与 MAXDOP 1 配合良好的应用程序很少是 DynamicsAX 和 Sharepoint。是的,正如 Paul 在本文中提到的那样,幽灵清理是单线程的,但仅仅因为系统进程是单线程的,并不意味着 MAXDOP=1 会对您有益。这是我从你的问题中得出的结论。您可以从
cost threshold of parallelism value =50
. 提到的值 5 完全没用,它是过去的日子。对于现在在许多内核上运行的系统,我建议将并行度值的成本阈值设置为 50,并将 MAXDOP 值设置为您可以从下面共享的链接中获得。看看这对你有用。我们已经有了 SE 线程什么是计算 MAXDOP 值的好方法我建议您从此链接中提到的查询中获取 MAXDOP 值,看看这是否有助于您的环境。
另外,我并不是说您完全忽略了供应商的建议,而是供应商向您提供了他们无法更改 SQL Server 查询引擎行为的应用程序。