728x90
요약 : 최단거리 찾을때는 CPU CORE개수 많은 데서 인덱스 없애고, 처리하세요
공간연산을 처리하다 보면 연산 시간이 많이 걸릴때가 있습니다.
특히 최단거리 찾기 문제를 해결할때 거리내에 해당되는 모든 객체를 검사하기 때문에 시간이 오래 걸립니다.
이때 병렬처리를 이용해 튜닝을 합니다.
그런데 병렬처리를 작동 시키는게 최적화기(optimizer)에게 MAXDOP로 힌트를 줘도 안될때도 있습니다.
병렬처리는 mssql 입장에서는 기댈곳이 없을 때 cpu에 기대는 것입니다.
그래서 강제로 발동 시기기 위해서는 index를 사용하지 않게 하는것이 방법이 될 수 있습니다.
(KEY, INDEX 삭제)
그리고 ORDER BY, TOP 절에 따라 동작 여부가 갈리기도 하구요.
그래서 항상 쿼리 플랜을 확인하고, 구동한 뒤에 SP_WHO를 통해 잘돌고있는지 체크가 필요합니다.
아래 병렬처리 수준 지정 중 max_degree of parallelism 은 쿼리 구문에 WITH OPTION(MAXDOP [N]) 으로 병렬처리 수준을 제어할 수 있습니다. [N] 에 0 이 들어가면 무제한 [N]에 숫자가 들어가면 그만큼의 병렬처리를 합니다.
1이면 병렬처리 안하는것입니다.
--설정 on
sp_configure 'show advanced options', 1;
GO
reconfigure;
GO
--병렬처리 수준 지정 (ex. 10초)
sp_configure 'cost threshold for parallelism', 10;
GO
reconfigure;
GO
--병렬처리 수준 지정
SP_CONFIGURE 'MAX DEGREE OF PARALLELISM', 0
GO
--적용
RECONFIGURE WITH OVERRIDE
GO
--확인
SP_CONFIGURE
GO
MSSQL 서버에서 병렬처리는 피해야할 것이 될 수도 있지만, 성능 튜닝에 활용할 수도 있습니다.
'프로그래밍 > TSQL' 카테고리의 다른 글
[MSSQL]형상 자르기 geometry 함수 (0) | 2021.09.30 |
---|---|
[MSSQL] datetime vs datetime2 타입 차이 (0) | 2021.08.25 |
[SQL][GEOMETRY][MATH] 좌표 벡터 기반 이동 (0) | 2021.07.01 |
[MSSQL]OPENQUERY 실패 (해결) (2) | 2021.06.16 |
BCP 호스트 데이터 파일을 열 수 없습니다.(“Unable to Open BCP host data-file”) - 해결(solved) (0) | 2021.06.09 |
댓글