标签: maxdop

SQL Server MAXDOP 设置算法

在设置新的 SQL Server 时,我使用以下代码来确定设置的良好起点MAXDOP

/* 
   This will recommend a MAXDOP setting appropriate for your machine's NUMA memory
   configuration.  You will need to evaluate this setting in a non-production 
   environment before moving it to production.

   MAXDOP can be configured using:  
   EXEC sp_configure 'max degree of parallelism',X;
   RECONFIGURE

   If this instance is hosting a Sharepoint database, you MUST specify MAXDOP=1 
   (URL wrapped for readability)
   http://blogs.msdn.com/b/rcormier/archive/2012/10/25/
   you-shall-configure-your-maxdop-when-using-sharepoint-2013.aspx

   Biztalk (all versions, including 2010): 
   MAXDOP = 1 is only required on the BizTalk …
Run Code Online (Sandbox Code Playgroud)

sql-server configuration maxdop

74
推荐指数
5
解决办法
6万
查看次数

为什么 SQL Server 安装程序在此推荐 MAXDOP 8?

我在 AWS i3.16xlarge 上运行 SQL Server 2022 RC1 设置,具有 2 个插槽、2 个 NUMA 节点、每个节点 32 个逻辑处理器、总共 64 个逻辑处理器。

安装程序推荐 MAXDOP 8:

SQL Server 设置和任务管理器

但是,如果您单击该链接来配置 MAXDOP,建议会显示:

MAXDOP 建议

根据那篇知识库文章,MAXDOP 应该是 16,而不是 8。当然,从技术上讲,8 小于 16 - 但 2、4 或 15 也是如此。8 从哪里来?

SQL Server 安装完成且服务启动后,日志显示 SQL Server 自动实施具有 4 个节点的 Soft-NUMA,每个节点有 16 个逻辑处理器:

SQL Server 错误日志

同样,这表明 MAXDOP 应为 16。

这是一个错误,还是我错过了一些明显的事情?是否还有另一个不成文的规则,设置将在 MAXDOP 8 处停止?

sql-server configuration maxdop numa sql-server-2022

16
推荐指数
2
解决办法
2731
查看次数

MAXDOP = 1,查询提示和并行成本阈值

如果实例MAXDOP设置为 1 并且查询提示用于允许特定查询并行执行,SQL 是否仍使用并行成本阈值值来决定是否实际并行执行?

我一直无法挖掘出这些特定信息,尽管此链接表明如果MAXDOP为 1 ,则 CTFP 将被忽略。这在没有查询提示的情况下是有意义的,因为没有请求,无论成本如何,当MAXDOP为 1时都会并行。

谁能让我知道这两个请求的预期行为是什么?

示例 1:

Instance Maxdop: 1 
CTFP: 50 
Query hint: Maxdop=2 
Query cost: 30
Run Code Online (Sandbox Code Playgroud)

示例 2:

Instance Maxdop: 1
CTFP: 50
Query hint: Maxdop=2
Query cost: 70
Run Code Online (Sandbox Code Playgroud)

sql-server optimization parallelism sql-server-2012 maxdop

11
推荐指数
1
解决办法
4001
查看次数

SQL Server 2014 的 MAXDOP 设置

我知道这个问题已经被问过很多次了,也有答案,但是,我仍然需要更多关于这个主题的指导。

以下是来自 SSMS 的我的 CPU 的详细信息:

中央处理器

下面是数据库服务器任务管理器中的 CPU 选项卡:

CPU选项卡

MAXDOP通过以下公式将 的设置保持在 2:

declare @hyperthreadingRatio bit
declare @logicalCPUs int
declare @HTEnabled int
declare @physicalCPU int
declare @SOCKET int
declare @logicalCPUPerNuma int
declare @NoOfNUMA int
declare @MaxDOP int

select @logicalCPUs = cpu_count -- [Logical CPU Count]
    ,@hyperthreadingRatio = hyperthread_ratio --  [Hyperthread Ratio]
    ,@physicalCPU = cpu_count / hyperthread_ratio -- [Physical CPU Count]
    ,@HTEnabled = case 
        when cpu_count > hyperthread_ratio
            then 1
        else 0
        end -- HTEnabled
from sys.dm_os_sys_info
option (recompile);

select …
Run Code Online (Sandbox Code Playgroud)

sql-server configuration maxdop sql-server-2014

8
推荐指数
2
解决办法
2342
查看次数

MAXDOP 不工作?

我想MAXDOP在我的电脑上测试一下。所以我MAXDOP为特定查询设置为 2。但是,当我在运行查询时查看任务管理器中的逻辑处理器时,看起来它们都被使用了。我认为如果MAXDOP设置为 2 ,它只会使用 2 个逻辑处理器?有谁知道发生了什么?请看下图。

另一个问题是,DOP执行计划返回的值是1。现在我知道设置MAXDOP并不意味着SQL Server 会实际使用设置的数字。然而,考虑到我的 4 个逻辑处理器似乎都被用于处理查询,看到DOP1.

这是我运行的查询: 在此处输入图片说明

这是我运行时发生的情况(即看起来所有 4 个逻辑处理器都用于运行查询): 在此处输入图片说明

sql-server parallelism maxdop sql-server-2014

7
推荐指数
1
解决办法
1800
查看次数

当我们在实时系统中更改 maxdop 以及正在执行的查询时,正在进行的查询会发生什么情况?

我们有一个产品系统,有时会卡住,除了更改实时系统上的 maxdop 参数之外,我们所做的任何事情都无济于事,在我们更改后,一切都恢复正常。即使我们将 maxdop 从 4 更改为 0,或者从 1 更改为 2,只要我们更改 maxdop 即可。这种情况已经持续了大约一年(在此期间,这种情况发生了大约四五次),但我们无法找到导致这种情况的原因。由于系统即将更换,并且我们有某种解决方法,我并不是寻求帮助来解决这个问题,只是为了了解更改 maxdop 时现有会话会发生什么,所以我的问题是:会发生什么当我们在实时系统中更改 maxdop 以及它们正在执行时正在进行的查询?

performance sql-server maxdop

6
推荐指数
1
解决办法
1072
查看次数

SQL Server R2 标准版 MAXDOP 设置

我正在寻找有关使用以下配置在 SQL Server 实例中设置 MAXDOP 的确认/指导:

版本:SQL Server 2008 R2 标准版处理器:2 x AMD Opteron(TM) 处理器 6234 = 24 核启用超线程

对于这个处理器,每个单独的插槽都有两个 NUMA 节点,每个节点都有 6 个内核。Microsoft 的知识库文章“最大并行度”配置选项的建议和指南 ( http://support.microsoft.com/kb/2806535 ) 建议“对于已配置 NUMA 并启用超线程的服务器,MAXDOP 值不应超过每个 NUMA 节点的物理处理器数量。” 所以我想将 MAXDOP 设置为 6(一个 NUMA 节点中的内核数。)

然而,微软关于最大并行度选项的文档http://technet.microsoft.com/en-us/library/ms181007(v=SQL.105).aspx告诉我可以用于 MAXDOP 的最大值SQL Server 2008 R2 标准版为 4。

所以,我猜测 MAXDOP 4 的版本推荐覆盖了 MAXDOP=6 的处理器/NUMA 推荐?其他任何人都有这种配置并且知道如果我尝试将 MAXDOP 设置为 6 会发生什么?

sql-server-2008-r2 maxdop

5
推荐指数
1
解决办法
1517
查看次数

如何减少巨大的 CXPACKET & LATCH_EX (ACCESS_METHODS_DATASET_PARENT) 等待时间?

问题

自今年年初以来,由于我们系统中的 SQL 超时,我们一直在经历高度的用户中断。

有问题的 SQL-Server 实例在工作时间内的 CPU 使用率非常高(所有 16 个内核的 CPU 使用率始终高于 90%)。

我们还注意到等待时间非常长:CXPACKET 和 LATCH_EX 的组合约占所有等待的 97%。这在 CXPACKET 和 LATCH_EX 之间分成大约 50/50。

占 LATCH_EX 绝大多数 (>95%) 的非缓冲闩锁等待是 ACCESS_METHODS_DATASET_PARENT。

这表明问题与并行性有关。

等待时间比例的一个例子是:

CXPACKET : 332,301,799 ms
LATCH_EX : 267,955,752 ms
PAGEIOLATCH_SH : 2,955,160 ms
Run Code Online (Sandbox Code Playgroud)

这是 1 月 11 日 08:00-16:24 之间的时间段。

正在考虑的选项

1) 将 MAXDOP 从 0 更改为 4 到 8 之间的值

2) 将并行度的成本阈值从 50 修改为更高的数字

关于如何减轻我们所看到的非常高的 CPU 负载并减少超时的建议最受欢迎,特别是建议的行动方案是否明智,以及将 MAXDOP 和并行成本阈值更改为哪些数字。

背景资料

  • SQL-Server 2008 R2 在 AMD Opteron 6180 SE …

parallelism sql-server-2008-r2 maxdop timeout latch

5
推荐指数
1
解决办法
1万
查看次数

Maxdop 的并行成本阈值 = 1

一直在与我公司的应用程序供应商就并行性进行辩论。他们坚持认为 Maxdop = 1 对 app/db 有显着的性能改进,但他们绝对没有提供这方面的证据。

我测试了各种 DOP/CT 设置,发现在使用 Maxdop 4(8 个超线程内核)和 CT 150 时,自动化测试的整体性能提高了 28%。

供应商的 DBA 最近表示:“即使 DOP 为‘1’,MSSQL 的内部进程也能使用该值,在使用它的 MSSQL 服务器中存在低于 51 的 SPID、幽灵清理等问题这个。”

我已经对此进行了研究,尽管信息很少,但 Paul Randall 至少说 Ghost 清理始终是单线程的,所以显然供应商的 dba 不正确?

当 Maxdop =1 时,对 CT 的影响有什么想法吗?

sql-server-2008-r2 maxdop

5
推荐指数
1
解决办法
492
查看次数

与默认 maxdop 并行运行的查询

我需要了解 sql server 查询的以下行为

系统有 4 个 CPU,超线程比率为 20,使 80 个逻辑处理器在我的 sql server 实例上计数。

当前 MAXDOP 为 0,ctop 为 5

这是一个只读实例,充当 LS 的备用实例,其中完成所有报告。

进入的许多查询似乎显示并行度为 64。

问题: .1。当逻辑处理器数为 80 时,为什么并行度不是 80?

  1. 我的理解是否正确,如果一个小时内有 6 个慢查询都显示并行度 64 预计会变慢,因为它们可能会击中相同的线程并因此显示为 cx 数据包等待。因此我相信通过测试将 MAXDOP 更改为 16 或 8 应该给他们自己的线程来完成?

谢谢

performance sql-server sql-server-2012 maxdop query-performance

5
推荐指数
1
解决办法
312
查看次数