-1

저장 프로 시저 중 하나에 시간이 너무 많이 걸리는 것으로 나타났습니다 - 평균적으로 평균 15-20 초가 걸리지 만 하루 중 하나에는 100 초 이상 걸렸습니다 .SQL Server 2012 저장 프로 시저에 너무 많은 시간이 걸림

지난 주 월요일에 일어난 일이며 이번 주에도 화요일에 다시 한 번 반복됩니다. 우리는 DB의로드가 일관성이 있는지 확인했습니다. 월요일이나 화요일에는 볼륨이 없습니다.

예상대로 작동하는 동일한 DB의 다른 모든 저장 프로 시저. 그러나이 저장 프로 시저는 너무 많은 시간을 소비하는 추가 테이블을 거의 사용하지 않습니다. 색인을 다시 생성 한 후에 만 ​​정상적으로 나타납니다. 이 저장 프로시 저는 내부적으로 다른 저장 프로 시저 및 함수를 거의 호출하지 않습니다.

무엇이 잘못 될 수 있습니까?

영향은 하나의 저장 프로 시저에만 있으므로 네트워크와 관련이있을 수 없습니다.

영향은 하나의 저장 프로 시저에만 있으므로 DB로드 또는 CPU 사용과 관련 될 수 없습니다.

월요일 또는 화요일에만 실행되는 예약 된 작업이 없습니다.

+0

자세한 정보가 필요한 것 같습니다. SQL 프로파일 러를 사용하여 추적을 실행하여 성능 문제가 발생할 때 어떤 일이 일어나는지 확인할 수 있는지 확인하는 것이 좋습니다. –

+0

예 실행 계획은 병목을 일으키는 원인을보기 위해 중요한 정보를 제공합니다. 공유하는 경우 검토하는 데 도움이됩니다. –

답변

0

나는 활동에서 대부분의 CPU를 차지하는 프로세스를보고 SQL 프로파일 러를 사용하여 얼마나 많은 리소스 쿼리가 필요한지 확인합니다. 저장 프로 시저가 너무 많은 CPU를 사용하는 경우 쿼리가 실행되는 방식을 검사해야합니다.
쿼리 분석기에서 실제 실행 계획 표시를 사용합니다. 여기서 인덱스 또는 테이블 스캔, 정렬 알고리즘 등을 사용하여 쿼리를 실행하는 방법을 살펴볼 것입니다. 가장 많은 CPU를 사용하는 함수를 보여줍니다. 읽은 쿼리 인 경우 테이블을 검사하여 내부적으로 조각화 된 테이블과 데이터를 검색하는 데 걸리는 통과 수를 확인합니다. 쓰기 쿼리라면 행/테이블 잠금과 저널을 검사 할 것입니다. 복구 모델을 단순에서 전체로 변경하면 쓰기 작업에 상당한 시간이 걸릴 수 있습니다.
실행 계획을 수행했다면 실제로 실행을 느리게하는 것을 볼 수 있도록 여기에 저장 프로 시저가있는 그림을 붙여 넣습니다.
SQL 쿼리, 인덱싱, 쿼리 힌트 및 테이블 분할을 변경하여 문제를 해결하십시오.