열망 스풀이 나타내는 문제점


27

현재 SQL Server 2008 R2에서 실행 중

UPDATE 문의 성능을 높이려고합니다. 실행 계획에서 Eager Spool 작업이 팝업되는 것을 알 수 있습니다. 스풀링 작업에 대한 나의 이해는 매우 기본적입니다. 업데이트 중에 테이블의 임시 저장 영역을 작성합니다.

또한 그들이 훨씬 더 나쁜 실행 시간을 막는 동안 열렬한 스풀은 종종 테이블 구조 및 / 또는 쿼리 문에 근본적인 문제를 나타냅니다.

내 질문은 매우 간단합니다. 쿼리 계획에 Eager Spool이 표시되면 어떤 문제를 먼저 해결해야합니까?

시스템의 모든 부분을 분석 하여 성능을 향상시킬 것입니다. 시작 위치에 대한 지침 만 찾고 있습니다.


계획을 보여줄 수 있습니까? 스풀은 많은 다른 것을 의미 할 수 있습니다.
usr

그리고 UPDATE테이블에 자체 참조 외래 키가 있거나 데이터 액세스를 수행 하거나 스키마 바운드가 아닌
Martin Smith

답변:


18

UPDATE 문의 성능을 높이려고합니다. 실행 계획에서 Eager Spool 작업이 팝업되는 것을 알 수 있습니다.

Eager 스풀은 Halloween Protection을 포함하여 여러 가지 이유로 추가 되거나 비 클러스터형 인덱스를 유지할 때 I / O최적화 하기 위해 추가 될 수 있습니다 .

실행 계획을 보지 않고도 (사실조차도), 이러한 시나리오 중 어떤 시나리오가 특정 경우에 적용되는지는 확실하지 않습니다. 데이터 민감도가 중요한 경우 SentryOne Plan Explorer를 사용하여 분석 할 익명 버전의 계획을 업로드하는 것이 좋습니다 .

어쨌든 Eager 스풀은 당신이 집중해야 할 것이 아닙니다. 많은 요소가 데이터를 변경하는 쿼리 의 실제 성능에 영향을줍니다 . Eager Spool 운영자에게 표시된 예상 백분율 비용을 기준으로 조정 노력을 기울이는 경우 특정 하드웨어 구성의 기능과 일치하지 않는 모델 을 사용하여 이러한 추정값이 생성되는 것을 고려 하십시오.


2

때때로 다른 차단 연산자가있을 때 열망하는 스풀을 피할 수 있습니다 (예 : 정렬). 따라서 데이터가 해당 단계에 도달 한 시간에 따라 이미 정렬되어 있는지 확인하는 것이 좋습니다. (아마도 색인이 없습니까?)

할로윈 보호를 위해 있다면 다른 사람들이 말한 것처럼 할 수있는 일은 거의 없습니다.

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