2010-12-08 5 views
0

T-SQL 코드 블록을 멀티 스레드로 실행하는 방법이 있습니까?SQL Server 강제 멀티 스레딩

그렇지 않으면 단일 스레드로 실행되는 코드 블록을 실행하지 않아도됩니까?

+2

비정상적인 요구 사항 - SQL Server가 적합하다고 생각하는 방식으로 해결할 수있는 것보다 답을 얻지 못합니다. –

+0

기본적으로 병렬로 실행할 수있는 많은 프로세스가 있습니다. 이러한 프로세스 중 일부는 현재 실행중인 다른 프로세스를 기반으로 단일 스레드로 실행되도록 강제됩니다. 다른 프로세스는 빠르게 완료 될 수 있지만 단일 스레드 프로세스는 오랜 시간 동안 계속 실행됩니다. 긴 프로세스가 일종의 폴링을 수행하고 멀티 스레드를 실행할 수있을 때까지 실행하지 않는 것이 더 좋을지 궁금합니다. – bingles

+0

그럴 경우 장기 실행 작업을 해체하거나 재 컴파일 옵션을 보면 작업의 각 "부분"을 서버의 현재로드에 따라 개별적으로 최적화 할 수 있습니다 그 시간에. –

답변

4

No.

최대 병렬 처리 수준을 지정할 수는 있지만 최소값은 지정할 수 없습니다. 쿼리에 병렬 계획이있는 경우 사용할 프로세서 수에 대한 결정은 현재 서버로드에 따라 각 실행 시간에 결정됩니다.

리소스 govenor를 사용하고 쿼리를 우선 순위가 높은 그룹에 넣으면 SQL Server 2008에서이 문제가 발생할 확률을 높일 수 있습니다.

+0

나는 그것을 두려워했다. 감사 – bingles

0

이상부터는 강제로 멀티 스레딩을 실행할 수 있습니다.

다음 코드는 멀티 스레드 강제 :

OPTION (RECOMPILE, QUERYTRACEON 8649) 

이 당신은 더 Paul White's blog 또는 단지 구글 읽을 수

OPTION (MAXDOP 1) 

단일 스레딩 강제로 "QUERYTRACEON을 8649"