u23*_*534 5 sql-server parallelism
sp_configure 在服务器上返回以下值。
名称最小最大 config_value run_value 最大并行度 0 32767 8 8
但是,sp_who1并sp_WhoIsActive表明某些spid有超过 8 行(例如 18 行左右)。在这种情况下,最多不应该是 8 行吗?
这个查询不时返回很多行:
SELECT *
FROM sys.sysprocesses sp
where exists
(
select spid
from sys.sysprocesses
where spid =sp.spid
and sp.waitresource = ''
group by spid
having count(*)>9
)
Run Code Online (Sandbox Code Playgroud)
Pau*_*ite 10
在这种情况下,最多不应该是 8 行吗?
否,因为单个执行计划可以使用比有效并行度 (DOP) 指定的更多线程。
在给定的时刻,调度程序上只有最多的 DOP 线程处于活动状态。SQL Server(2005 以后)将并行查询限制为 DOP 调度程序,而不是 DOP 线程。
由于调度程序抽象了一个逻辑处理器,这有效地限制了所需的并行性。
DOP 线程被分配给每个并行分支,其中一个分支由并行(交换)操作符定界。
有关更多信息,请参阅我的 Simple Talk 文章:
和/或我的 PASS Summit 2013 会议记录: