2009-06-05 6 views
0

저장 프로 시저를 실행하면 너무 많은 리소스를 사용하여 (특히 CPU 사용률이 90 % 이상인 경우) 때때로 서버에서 시간이 초과되는 문제가 있습니다.가장 느린 SQL 쿼리 블록을 찾아내는 가장 좋은 방법은 무엇입니까?

누구나 가장 빠르고 가장 좋은 방법은 많은 자원을 필요로하는 블록을 발견하는 것이고 해결할 좋은 방법을 제안 할 수 있습니까?

  • 나는 당신은 쿼리 프로파일 러를 사용하려면 SQL 서버 2005
+0

이것은 "대답"이 아니지만 Faroult & L' Hermite가 작성한 Refactoring SQL Applications 책을 좋아할 수도 있습니다. 비전있는 계획을 읽는 것 외에 다른 아이디어를 줄 것입니다. –

답변

5

을 사용하고 있습니다. Explained here. 쿼리 실행 경로를 그래픽으로 표시하고 그 중 어떤 부분이 가장 많은 시간을 소비하는지 표시합니다.

0

SQl 서버 관리 스튜디오를 사용하는 경우 SQL Server에서 쿼리를 실행하는 방법에 대한 정보를 표시하여 실행 계획을 설정하여 각 하위 프로세스에서 차지하는 전체 프로세스의 비율을 표시 할 수 있습니다 .

종종이 작업을 수행 할 때 대부분의 리소스를 사용하는 쿼리가 일부있을 것입니다.

이 정보를 사용하면 데이터베이스를 조정하는 방법에 대한 정보를 얻을 수 있습니다. 당신이 느린되는 블록 알고 싶다면

3

(잘못된 테이블 (들)에 인덱스를 추가하는 등)

ON

SET STATISTICS IO ON 다음

SET 통계 프로필을 사용하여 통계 시간 설정

SP를 실행하면 각 쿼리에 대한 통계가 표시됩니다. 비트가 SET 통계를 설정하는 뒤얽힌 할 수 SPROC에서 문 무리가있는 경우

SET SHOWPLAN_XML ON 
0

옵션을 사용할 수 있습니다. 입력과 연관시킬 많은 청크가 있기 때문입니다.

SSMS의 쿼리 계획을 그래픽으로 표현한 것은 전체 배치/sproc의 비용 대비 각 구문의 % 비용을 보여주기 때문에 유용합니다. 그러나이 값은 단일 값이므로 프로파일 러를 실행하고 명령문 수준 출력을 켜는 것이 도움이 될 수 있습니다. 프로파일 러는 이벤트 SQL : StmtCompleted와 열 CPU 및 읽기를 추가하면 각 명령문에 대해 별도의 IO 및 CPU 비용을 제공합니다.

0

: 단지 - 당신은 실행 계획을 볼 SQL 프로파일 러를 사용할 필요가 없습니다

관련 문제