문제

ASP.NET 응용 프로그램에서 실행되는 몇 가지 쿼리를 어떻게 프로파일 링 하는가? 데이터베이스로 인해 매우 느리게 실행되는 소프트웨어가 있습니다 (생각합니다). 테이블에는 색인이 있지만 많은 데이터로 작동하기 때문에 여전히 드래그됩니다. 더 큰 속도 개선으로 이어질 몇 가지 사소한 개선을 할 수있는 곳을 확인하기 위해 어떻게 프로필을 할 수 있습니까?

편집 : Webserver 가이 긴 쿼리 중에 타임 아웃을 좋아한다고 덧붙이고 싶습니다.

도움이 되었습니까?

해결책

SQL Server에는 이러한 상황에 도움이되는 몇 가지 훌륭한 도구가 있습니다. 이러한 도구는 Management Studio (Enterprise Manager + Query Analyzer라고 불렀음)에 내장되어 있습니다.

SQL Profiler를 사용하여 웹 응용 프로그램에서 오는 실제 쿼리를 표시하십시오.

각각의 문제가 쿼리를 복사합니다 (많은 CPU 시간 또는 IO를 먹는 문제). "실제 실행 계획 표시"로 쿼리를 실행하십시오. 바라건대 당신은 누락 된 명백한 색인을 볼 수 있기를 바랍니다.

튜닝 마법사를 실행할 수도 있습니다 (버튼은 "실제 실행 계획 표시"바로 옆에 있습니다. 쿼리를 실행하고 제안을합니다.

일반적으로 이미 인덱스가 있고 쿼리가 여전히 느리게 실행중인 경우 쿼리를 다른 방식으로 다시 작성해야합니다.

저장된 절차에 모든 쿼리를 유지하면이 작업이 발생합니다. 많이 더 쉬운.

다른 팁

SQL Server를 프로필하려면 SQL 프로파일 러.

그리고 당신은 사용할 수 있습니다 개미 프로파일 러 Red Gate에서 코드를 프로파일 링합니다.

ASP.NET과 잘 어울리는 또 다른 .NET Profiler는 다음과 같습니다 Dottrace. 나는 개인적으로 그것을 사용했고 내 코드에서 많은 병목 현상을 발견했습니다.

쿼리를 프로파일 링하는 데 필요한 대답이 있다고 생각합니다. 그러나 이것은 성능 튜닝에서 가장 쉬운 부분입니다. 네트워크 나 앱이 아닌 쿼리라는 것을 알면 문제를 어떻게 찾아서 해결합니까?

성능 튜닝은 복잡한 것입니다. 그러나 처음 볼 수있는 곳이 있습니다. 많은 데이터를 반환하고 있다고 말합니까? 필요한 것보다 더 많은 데이터를 반환하고 있습니까? 필요한 열과 레코드 만 반환하고 있습니까? Select *를 사용하여 100 개의 열을 반환하는 것은 실제로 사용중인 5 개의 열을 반환하는 것보다 훨씬 느릴 수 있습니다.

귀하의 지수 및 통계가 최신입니까? 잠시 동안이 작업을 수행하지 않았다면 STATISISTCS 및 RENINDEX를 업데이트하는 방법을 찾으십시오. 모든 조인 필드에 인덱스가 있습니까? WHERE 절의 필드는 어떻습니까?

커서를 사용해 보셨습니까? 하위 쿼리를 사용 했습니까? Union은 어떻습니까? 사용하는 경우 Union All로 변경할 수 있습니까?

쿼리가 사라질 수 있습니까 (이 용어에 익숙하지 않은 경우 Google).

그룹을 사용할 수있을 때 별개의 사용을 사용하고 있습니까?

자물쇠를 받고 있습니까?

이것을 볼 다른 것들이 많이 있습니다.

조정하려는 특정 쿼리 또는 저장 프로 시저가 있으면 쿼리 전에 통계를 켜는 것을 발견했습니다.

SET STATISTICS TIME ON
SET STATISTICS IO ON

쿼리 분석기에서 통계를 켤 때는 결과 창의 메시지 탭에 통계가 표시됩니다.

IO 통계는 인덱스가 필요한지 알려주기 때문에 특히 유용했습니다. IO 통계에서 높은 판독 횟수를 볼 수 있다면 영향을받는 테이블에 다른 인덱스를 추가 할 수 있습니다. 인덱스를 시도 할 때 쿼리를 다시 실행하여 읽기 수가 줄었는지 확인합니다. 몇 번의 반복 후에는 일반적으로 관련된 테이블에 대한 최고의 인덱스 (ES)를 찾을 수 있습니다.

다음은 이러한 통계 명령에 대한 MSDN 링크입니다.

통계 시간을 설정하십시오

통계 IO를 설정하십시오

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top