2016-08-01 2 views
1

SQL Server에서 저장 프로 시저를 생성하여 1 초 안에 데이터를 반환합니다. 이 저장 프로 시저는 며칠 동안 잘 작동하며 나중에 느려집니다. 그러나 변경하지 않고 다시 실행하면 빠릅니다.SQL Server 저장 프로 시저가 일정 시간이 지나면 느려집니다.

Recompile이이 문제를 해결할 수 있음을 알게되었습니다. 이것에 대한 어떤 제안?

또한이 쿼리는 거의 매초마다 충돌하므로 성능 문제가 발생합니까?

+0

통계를 업데이트 해 보았습니까? – bmsqldev

+0

귀하의 질문에 약간의 초기 분석을 가능하게하는 많은 세부 사항이 빠져 있습니다. 예 : 반환 된 데이터의 출처는 어디입니까? (테이블에서 추출되었다고 가정하는 것이 안전 한 것처럼 보이지만 테이블과 구성 방법은 무엇입니까?); 선택 이외에도 SP는 무엇을하고 있습니까? 반환 된 데이터의 양은 어느 정도입니까? ..... – FDavidov

+0

또한 빠르거나 느린 시간에 대한 실제 실행 계획이 필요합니다. – Lavel

답변

1

또한이 쿼리는 거의 매초마다 실행되므로 성능 문제가 발생합니다.

예 재 컴파일은 쿼리 계획을 컴파일하는 것은 밀리 초 만에 완료되지만 CPU resources.Even에 수신자가이 쿼리 wont't 사용하는 기존의 쿼리 계획

I 이후 여분의 CPU 부담을 추가 할 필요 Recomplie가이 문제를 해결할 수 있음을 알게되었습니다. 전달 된 매개 변수를 사용하여 쿼리 계획을 저장하고이 입력에 대한 계획을 최적화

SQL 서버 ..

각 고객이 다음 늘 때마다 재 컴파일, 거의 같은 주문을 갖는 테이블이 있다고 가정 도와 ..

반면에 고객의 주문 분포가 1-10000 범위에서 고르지 않은 경우.이 경우 한 주문을 가진 고객 입력을 사용하여 SP를 컴파일하면 10000 주문 고객이 SQL을 통과 할 때 메모리를 과소 평가하여 tempdb로 유출 될 수 있습니다.

parameter sniffing을 극복하고 내가 추천 한 링크를 읽고 어떤 옵션이 도움이되는지 여러 가지 방법으로 확인할 수 있습니다

관련 문제