복붙노트

[SQL] SQL 서버에서 OPTION (MAXDOP 1)을 사용하는 목적은 무엇인가?

SQL

SQL 서버에서 OPTION (MAXDOP 1)을 사용하는 목적은 무엇인가?

나는 분명 MAXDOP의 사용법을 이해 적이 없다. 나는 쿼리를 빠르게 만드는 것을 알고 그리고 내가 쿼리 최적화에 사용할 수있는 마지막 항목이다.

하지만, 내 질문은 언제, 어디에서 가장 잘 쿼리에서 사용하기에 적합하다?

해결법

  1. ==============================

    1.Kaboing 언급했듯이, MAXDOP (N)를 실제로 쿼리 프로세서에서 사용되는 CPU 코어의 수를 제어한다.

    Kaboing 언급했듯이, MAXDOP (N)를 실제로 쿼리 프로세서에서 사용되는 CPU 코어의 수를 제어한다.

    완전히 유휴 시스템에서 SQL 서버는 가능한 한 빨리 메모리에 테이블을 끌어와 메모리 사이에 가입을 시도합니다. 그것은 귀하의 경우, 그것은 하나의 CPU와 함께이 작업을 수행하는 것이 가장 좋습니다, 일 수 있었다. 사용자가 지정한 조인의이 순서를 사용하는 쿼리 최적화 프로그램을 강제로 OPTION (FORCE의 ORDER)를 사용하는 것과 같은 효과가있을 수 있습니다. 어떤 경우에는, 나는 옵션 (FORCE PLAN)의 실행 시간을 1 초 26 초에서 쿼리를 줄일 보았다.

    온라인은 MAXDOP 가능한 값은 말을 간다 :

    나는 확실히 MAXDOP 최고의 사용이 무엇인지, 그러나 나는 추측을하고 당신이 그것을 8 개 파티션 테이블이있는 경우 인해 I / O 제한에 MAXDOP (8)를 지정 할 것이라고 말할 것 아니지만, 내가 틀렸을 수도있다.

    여기에 내가 MAXDOP에 대한 발견 몇 가지 간단한 링크가 있습니다 :

    온라인 : 병렬 처리의 정도

    일반 가이드 라인은 MAXDOP 옵션을 구성하는 데 사용하는

  2. ==============================

    2.이것은 SQL Server의 평행도에 대한 일반적인 두서없는, 그것을 직접적으로 귀하의 질문에 대답하지 않을 수 있습니다.

    이것은 SQL Server의 평행도에 대한 일반적인 두서없는, 그것을 직접적으로 귀하의 질문에 대답하지 않을 수 있습니다.

    온라인에서, MAXDOP에 :

    병렬 및 CXPACKET 대기 유형에 리키 리 님의 블로그를 참조하십시오. 그것은 매우 흥미 롭군요.

    일반적으로, OLTP 데이터베이스, 내 의견은 쿼리가 여러 프로세서에서 실행해야하므로 비용이 많이 드는 경우, 쿼리 재 작성을보다 효율적 무언가로 할 필요가 있다는 것입니다.

    왜 MAXDOP를 추가하는 더 나은 결과를 얻을 (1)? 하드 실제 실행 계획없이 말할 수 있지만, 실행 계획이 옵션을 사용하지 않고, 예를 들어, 다른 가입 (가능성 또는) 다른 인덱스를 사용하여 MERGE를 사용하거나 HASH 조인이 완전히 다른 것과 그렇게 간단 할 수 있습니다.

  3. ==============================

    3.옆으로의 무언가로, MAXDOP 분명히 잠재적으로 불쾌한 버그에 대한 해결 방법으로 사용할 수 있습니다 :

    옆으로의 무언가로, MAXDOP 분명히 잠재적으로 불쾌한 버그에 대한 해결 방법으로 사용할 수 있습니다 :

    반환 된 ID 값이 항상 정확하지

  4. ==============================

    4.비정상적인 입력과 SQL 서버의 병렬화 버그의 몇 가지 있습니다. 이를 회피 할 OPTION (MAXDOP 1).

    비정상적인 입력과 SQL 서버의 병렬화 버그의 몇 가지 있습니다. 이를 회피 할 OPTION (MAXDOP 1).

    편집 : 올드. 내 테스트는 이들의 대부분은 더 이상 존재하지 않는 것처럼 보인다 SQL 2005에서 주로 수행하지만, SQL 2014 벙어리 무언가를 우리가 다시 옛날 방식으로 돌아가 작동 할 때마다 잠시 한 번 우리는 가정에 의문을 제기했다. 우리는 결코 그냥 나쁜 계획 생성이 최근의 사례 아니라는 것을 입증하기 위해 관리하지 SQL 서버가 최신 버전의 옛날 방식의 권리를 얻기 위해 의존 할 수 있기 때문에하지만. 모든 경우는 IO가 결합 이었기 때문에 쿼리는 1 다치게하지 않습니다 MAXDOP.

  5. ==============================

    5.내가 관찰 된 성능 문제를 기반으로 내 두 센트를 추가.

    내가 관찰 된 성능 문제를 기반으로 내 두 센트를 추가.

    간단한 쿼리가 불필요하게 parellelized지고 있다면, 그것은 하나를 해결하는 것보다 더 많은 문제를 가져올 수 있습니다. 그러나 "반사적"수정 같이 쿼리에 MAXDOP를 추가하기 전에 확인하기 위해 일부 서버 설정이 있습니다.

    예레미야 Peschka - 변경, MAXDOP 및 "병렬 처리 비용 임계 값"(CTFP) 다섯 SQL 서버 설정 확인하는 것이 중요 설정으로 언급된다.

    주 : 폴 화이트는 설정은 SQL Server에서 마이그레이션 SQL에서 비효율적 인 계획을 초래할 수 많은 양의 메모리를 사용하고 읽을 수 2005 2012 좋은의 KB 문서 후 성능 문제에 대한 응답으로, 확인으로 최대 서버 메모리 끄트머리를 언급 섬기는 사람

    조나단 Kehayias - 계획 캐시에서 튜닝 '병렬 처리에 대한 비용 임계 값은'CTFP을 위해 좋은 가치를 찾는 데 도움이됩니다.

    왜 병렬 처리에 대한 비용 임계 값은 무시됩니다?

    아론 버트 랜드 - 당신이 병렬 처리에 대한 긴장해야 식스 이유는 MAXDOP이 솔루션을 일부 시나리오에 관한 토론을 가지고있다.

    병렬 억제 구성 요소는 폴 화이트에서 언급 한 - 병렬 쿼리 실행 계획을 강제

  6. from https://stackoverflow.com/questions/163917/what-is-the-purpose-for-using-optionmaxdop-1-in-sql-server by cc-by-sa and MIT license