itsource

SQL Server에서 OPTION(MAXDOP 1)을 사용하는 목적은 무엇입니까?

mycopycode 2023. 7. 1. 08:34
반응형

SQL Server에서 OPTION(MAXDOP 1)을 사용하는 목적은 무엇입니까?

의 사용법을 명확하게 이해한 적이 없습니다.MAXDOP쿼리 속도가 빨라지고 쿼리 최적화에 사용할 수 있는 마지막 항목이라는 것을 알고 있습니다.

그러나 질문은 언제 어디서 쿼리에 사용하는 것이 가장 적합한가 하는 것입니다.

언급했듯이, 카잉이언듯이급했보,▁as언했급,MAXDOP(n)는 쿼리 프로세서에서 사용되는 CPU 코어의 수를 실제로 제어합니다.

완전히 유휴 상태인 시스템에서는 SQL Server가 가능한 한 빨리 테이블을 메모리로 가져와서 메모리에서 테이블 간에 조인하려고 시도합니다.이 경우 CPU 하나로 이 작업을 수행하는 것이 가장 좋습니다.이것은 사용하는 것과 같은 효과를 가질 수 있습니다.OPTION (FORCE ORDER)이 명령을 실행하면 쿼리 최적화 프로그램에서 지정한 조인 순서를 사용자가 지정한 조인 순서를 지정합니다.어떤 경우에는, 나는 본 적이 있습니다.OPTION (FORCE PLAN)쿼리 실행 시간을 26초에서 1초로 줄입니다.

북스 온라인은 계속해서 다음과 같은 가능한 가치를 말합니다.MAXDOP다음과 같습니다.

0 - 현재 시스템 워크로드에 따라 사용 가능한 실제 CPU 수를 사용합니다.기본값이며 권장 설정입니다.

1 - 병렬 계획 생성을 억제합니다.작업이 순차적으로 실행됩니다.

2-64 - 프로세서 수를 지정된 값으로 제한합니다.현재 워크로드에 따라 더 적은 수의 프로세서를 사용할 수 있습니다.사용 가능한 CPU 수보다 큰 값을 지정하면 실제 사용 가능한 CPU 수가 사용됩니다.

의 가장 좋은 사용법이 무엇인지 잘 모르겠습니다.MAXDOP, 저추고싶습다니하측을 하고 싶다고 합니다. 만약 당신이 8개의 파티션이 있는 테이블을 가지고 있다면, 당신은 지정하고 싶을 것입니다.MAXDOP(8)I/O 제한으로 인해 문제가 발생하지만, 제가 틀릴 수도 있습니다.

제가 다은제찾은몇가링간다크니입단한지에 대한 몇 .MAXDOP:

온라인 책:평행도

MAXDOP 옵션을 구성하는 데 사용할 일반 지침

이것은 SQL Server의 병렬 처리에 대한 일반적인 횡설수설로, 질문에 직접 대답하지 않을 수 있습니다.

온라인 서적, MAXDOP에서:

쿼리 프로세서가 단일 인덱스 문을 실행하는 데 사용할 수 있는 최대 프로세서 수를 설정합니다.현재 시스템 작업량에 따라 더 적은 수의 프로세서를 사용할 수 있습니다.

병렬화 CXPACKET 대기 유형에 대한 Rickie Lee의 블로그를 참조하십시오.꽤 흥미롭군요.

일반적으로 OLTP 데이터베이스에서 제 의견은 쿼리가 너무 비싸서 여러 프로세서에서 실행되어야 한다면 쿼리를 더 효율적인 것으로 다시 작성해야 한다는 것입니다.

MAXDOP(1)을 추가하여 더 나은 결과를 얻는 이유는 무엇입니까?실제 실행 계획 없이는 알 수 없지만 실행 계획이 너무 간단하여 옵션이 없으면 다른 인덱스(또는 더 가능성이 높은)를 사용하거나 병합 또는 해시 조인을 사용하여 다르게 조인할 수 있습니다.

MAXDOP은 잠재적으로 유해한 버그에 대한 해결책으로 사용될 수 있습니다.

반환된 ID 값이 항상 올바른 것은 아님

SQL Server에 비정상적인 입력을 가진 몇 가지 병렬화 버그가 있습니다.OPTION(MAXDOP 1)은 이들을 비켜줍니다.

편집: 이전.테스트는 주로 SQL 2005에서 수행되었습니다.이 중 대부분은 더 이상 존재하지 않는 것처럼 보이지만, SQL 2014가 어리석은 일을 하고 예전 방식으로 돌아가서 제대로 작동한다는 가정에 대해 가끔 의문을 제기합니다.SQL 서버를 사용하면 최신 버전에서 이전 방식을 올바르게 적용할 수 있기 때문에 최신 사례에 대한 잘못된 계획 생성이 아니라는 것을 입증할 수 없었습니다.모든 케이스가 IO 바운드 쿼리였기 때문에 MAXDOP 1은 아프지 않습니다.

제가 관찰한 성능 문제에 근거하여 제 2센트를 추가했습니다.

단순한 쿼리가 불필요하게 병렬화되면 하나를 해결하는 것보다 더 많은 문제를 가져올 수 있습니다.그러나 MAXDOP을 쿼리에 "무릎 꿇기" 수정으로 추가하기 전에 확인해야 할 몇 가지 서버 설정이 있습니다.

Jeremia Peschka - 변경할 5가지 SQL Server 설정, MAXDOP 및 "병렬화를 위한 비용 임계값"(CTFP는해야 할 됩니다.)는 확인해야 할 중요한 설정으로 언급됩니다.

가 언급한 것은 다음과 같습니다.max server memorySQL Server 2005에서 2012로 마이그레이션한성능 문제에 대한 응답으로 확인할 설정으로 저장됩니다.읽기 좋은 KB 기사는 대용량 메모리를 사용하면 SQL Server에서 비효율적인 계획이 발생할 수 있다는 것입니다.

Jonathan Kehayias - Plan Cache에서 '병렬화를 위한 비용 임계값'을 조정하면 다음과 같은 이점을 얻을 수 있습니다.CTFP.

병렬화에 대한 비용 임계값이 무시되는 이유는 무엇입니까?

Aaron Bertrand - 병렬화에 대해 긴장해야 하는 6가지 이유는 MAXDOP이 해결책인 시나리오에 대한 논의가 있습니다.

병렬화 억제 구성요소는 Paul White - 병렬 쿼리 실행 계획 강제에 언급되어 있습니다.

언급URL : https://stackoverflow.com/questions/163917/what-is-the-purpose-for-using-optionmaxdop-1-in-sql-server

반응형