충분한 계획이없는 쿼리


20

SQL Server 2012 데이터베이스가 있습니다. 나는 Reason for early termination of statement optimization일부 쿼리 에 대한 가치를 발견 하고 모두 제공했다 Good Enough Plan Found. 이제 내 질문은 :

  1. “문 최적화의 조기 종료 사유”의 가능한 모든 유형은 무엇입니까? msdn에서 이것을 검색했지만 전체 값 목록을 얻지 못했습니다.
  2. Good Enough Plan Found 이외의 이유로 최적화가 종료 된 모든 쿼리를 나열하는 DMV 또는 확장 이벤트가 있습니까? 전체 가능성 목록을 나열하지 않은 다음 두 기사를 참조했습니다. [또한 데이터베이스에서 다른 결과를 제공합니다].

여기에 이미지 설명을 입력하십시오


답변:


20
  • 메모리 한도 초과

    옵티마이 저는 메모리 압력으로 인해 더 나은 계획 대안을 찾지 않아야했습니다. 그 이유를 조사하고 정정 한 후 쿼리 컴파일을 다시 시도했습니다. 메모리 부족 상태가 존재하지 않았을 때 옵티마이 저가 선택한 계획이 아닐 수도 있습니다.

  • 타임 아웃

    이 이유는 많은 오해 입니다.

    쿼리 최적화 프로그램은 합리적인 계획을 신속하게 찾는 것을 목표로합니다 . 최상의 계획을 찾기 위해 철저한 검색을 수행하지는 않습니다. 설계 상 필요 이상으로 최적화에 더 많은 시간을 소비하지 않습니다. 이를 보장하기 위해 작동하는 이러한 기능 중 하나는 '시간 초과'(시간 측정 값이 아님)입니다.

    옵티마이 저는 논리적 쿼리의 복잡성, 카디널리티 추정치 및 지금까지 찾은 가장 저렴한 계획의 예상 비용 (있는 경우)을 기반으로 '탐색 예산'을 설정합니다. 카디널리티가 높은 복잡한 쿼리에는 더 높은 예산이 제공됩니다.

    검색 단계 중 하나에서이 예산을 초과하면 단계가 종료됩니다. 이것은 옵티마이 저의 설계 및 정상 작동의 일부입니다. 더 많은 최적화 노력이 필요한 쿼리가 필요합니다. 그렇지 않은 사람들.

    '시간 초과'를 '충분한 계획을 찾았습니다'라고 생각하십시오.

  • 충분한 계획을 찾았습니다

    이것은 빈 이유와 정확히 동일합니다. 0.909090 ... (1 / 1.1) 이하의 비용으로 계획을 세우는 것은 단순히 역사적 단점입니다. 이 이유가 나타나면 최적화 프로그램 코드 내에서 조기에 멈추거나 달리 처리하거나 다르게 처리하는 것이 없습니다.

메모리 한계 초과를 제외하고, '초기 종료 이유'는 쿼리 튜닝 또는 성능 분석에 큰 의미를 갖지 않습니다. 나는 일반적으로 그들을 무시합니다.

조언

실제 성능 메트릭 (경과 시간, CPU / 메모리 사용 등 컨텍스트에서 중요한 모든 것)을 기반으로하는 쿼리 튜닝 노력을 목표로합니다. 의도 한 목적에 비해 쿼리 속도가 너무 느리면 더 빨리 만드는 데 시간을 투자하십시오. 실제 성능을 측정하고이를 기준 및 히스토리와 비교하고 중요한 차이에서 튜닝 노력을 목표로합니다.

유용한 통계 및 인덱스, 잘 작성되고 최적화 된 쿼리를 통해 적절한 관계형 스키마에 보장 된 깨끗한 데이터를 저장하십시오.


10

당신이 가서 경우 http://schemas.microsoft.com/sqlserver/2004/07/showplan/showplanxml.xsd (당신은 XML과 같은 실행 계획을 열면 당신이 볼 수있는 링크 인), 당신은 보자 다음과 같은 세 가지 이유가 있습니다.

  • 타임 아웃
  • 메모리 제한 초과
  • 좋은 충분한 계획

언급 한 기사가 이러한 이벤트를 찾기에 적합한 것 같습니다. 특정 문제가 있습니까? 유념해야 할 것은 이러한 DMV가 서버에서 실행되는 모든 SQL 명령을 캡처하지 않으며 서버가 다시 시작될 때 재설정되지 않는다는 것입니다. 확장 이벤트로 실행 계획 XML을 트랩하고 쿼리 할 수는 있지만 너무 과장된 것 같습니다.

나는 GoodEnoughPlanFound에 대해 너무 걱정하지 않을 것입니다. 옵티마이 저가 (좋은 계획을 빨리 찾는) 일을 꽤 잘하고있는 것처럼 보입니다.

HTH

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.