MAXDOPヒント制限双方各並列演算子とクエリ・プラン内のすべての並列オペレータによって使用される論理CPUの総数で使用されるスレッドの数。 This postはこれをより詳細に説明しています。
質問に記載されている2つの並列索引スキャンでは、各並列スキャンは2つのスレッドに制限され、合計4つの並列スレッドに制限されています。これらの並列スレッドのタスクは、MAXDOP番号で指定されたものと同じCPUを共有します。同じCPU上で一度に1人以上のワーカーをアクティブにすることはできません。そのため、並列操作のために特定の時間に実際に使用されたCPUの総数はMAXDOPによって制限されます。しかし、MAXDOPの一部とはみなされない他のプラン演算子用のスレッドもあります。そのため、クエリでは最大3つのコアを同時に使用できます。
を実行し、クエリの実行中に、このクエリと、あなたは1個以下の時に与えられたスケジューラ上で実行中のタスクが表示されるはずです。
SELECT ost.session_id
, ost.scheduler_id
, w.worker_address
, ost.task_state
, wt.wait_type
, wt.wait_duration_ms
FROM sys.dm_os_tasks ost
LEFT JOIN sys.dm_os_workers w ON ost.worker_address = w.worker_address
LEFT JOIN sys.dm_os_waiting_tasks wt ON w.task_address = wt.waiting_task_address
WHERE ost.session_id = 54
ORDER BY scheduler_id;
Maxdopsも(SQL Serverのワークグループ版であるSQL Serverのエディションによって制限されています2)あなたが走っていること。変更する必要がある場合を除いて、「0」のままにしておき、割り当てるSQL Serverの数をSQL Serverに決定させます。 –