sp_who2 中的 SPID 有很多行是什么意思

Ang*_*ker 7 sql-server sql-server-2016

sp_who2 active在盒子上运行并为每个 SPID 获取多行。例如,见下文。这是否意味着 SQL Server 已将查询分解为 23 个并行子查询?如果是这样,为什么它会忽略 MaxDegreeOfParallelism 设置 8?或者这是别的什么?

在此处输入图片说明

Kin*_*hah 11

为什么忽略 MaxDegreeOfParallelism 设置为 8?

那是因为MAXDOP 是针对每个运算符而不是针对每个执行计划的。将您的MAXDOP 设置设置为一个合适的值

MAXDOP 设置用于限制执行计划中每个操作的线程数,不限制用于执行查询的线程数。因此,在 sysprocesses 中看到每个 SPID 的线程数大于 MAXDOP 设置是正常的。

另请参阅它是如何工作的:SQL Server 每个查询程度的并行工作器计数

作为旁注:使用sp_whoIsActive - 有很多选项并使用 DMV

-- sp_who2 是遗留的,使用旧的不推荐使用的表,写于冰河时代 1995/11/03 10:16 :-)