SQL Server/SQL Server 자주보는

[MSSQL] SP 가 병렬처리되는지 확인하는 방법

꽁담 2020. 2. 9. 20:03

병렬처리 기법


단일 쿼리에서 다수의 CPU 를 사용할 수 있는 병렬처리 기법을 지원하고 있습니다.

( Enterprise 버전에서 지원되고 있습니다. )


병렬처리를 하게 되는 경우 CPU 사용률은 높아지지만 응답속도는 더 빨라질 수 있습니다.

그렇다면 어떤 SP 가 병렬처리 되고 있는지 확인해 봅니다.



SP 가 병렬처리되는지 확인하는 쿼리


라이브에서 운영중인 쿼리는 대부분 SP 를 통해서 수행되고 있으며,

어떤 SP 가 CPU 를 몇 개를 사용하는지 알 수 있는 DMV 를 제공하고 있습니다.


아래 쿼리는 플랜캐시를 통해 병렬처리되는 실행계획을 가지고 있는 DB 명, SP 명, CPU 사용 수를 반환합니다.

실행계획에서만 확인할 수 있기 때문에 실행계획이 플랜캐시에 없는 경우 병렬처리 되는지 확인할 수 없습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT 
  DB_NAME(p.dbid),
  OBJECT_NAME(p.objectid, p.dbid),
  qs.last_dop,
  qs.min_dop,
  qs.max_dop
FROM
  sys.dm_exec_cached_plans cp
    CROSS apply sys.dm_exec_query_plan(cp.plan_handle) p
  JOIN sys.dm_exec_query_stats qs
  ON qs.plan_handle = cp.plan_handle
WHERE
  p.query_plan.value('declare namespace p="http://schemas.microsoft.com/sqlserver/2004/07/showplan";max(//p:RelOp/@Parallel)''float'> 0
OPTION (MAXDOP 1)
 
cs