SQL Server 프로파일러를 사용하여 추적 보기 및 분석
SQL Server Profiler를 사용하여 추적에 캡처된 이벤트 데이터를 볼 수 있습니다. SQL Server Profiler는 정의된 추적 속성을 기반으로 데이터를 표시합니다. SQL Server 데이터를 분석하는 한 가지 방법은 SQL Server 또는 데이터베이스 엔진 튜닝 관리자 같은 다른 프로그램으로 데이터를 복사하는 것입니다. 데이터베이스 엔진 튜닝 관리자는 Text 데이터 열이 추적에 포함되어 있는 경우 SQL 일괄 처리와 RPC(원격 프로시저 호출) 이벤트가 있는 추적 파일을 사용할 수 있습니다. 자세한 내용은 물리적 데이터베이스 디자인 튜닝을 참조하십시오. 데이터베이스 엔진 튜닝 관리자에 사용할 수 있도록 올바른 이벤트와 열이 캡처되었는지 확인하려면 SQL Server Profiler에서 제공되는 사전 정의된 튜닝 템플릿을 사용합니다.
SQL Server Profiler를 사용하여 추적을 열 때 추적 파일이 SQL Server Profiler 또는 SQL Trace 시스템 저장 프로시저로 생성된 경우 추적 파일에 .trc 파일 확장명이 없어도 됩니다.
[!참고]
SQL Server Profiler는 SQL Trace .log 파일 및 일반 SQL 스크립트 파일도 읽을 수 있습니다. trace.txt와 같이 .log 파일 확장명을 가지지 않은 SQL Trace .log 파일을 열 때는 SQLTrace_Log를 파일 형식으로 지정하십시오.
추적 분석에 유용한 SQL Server Profiler 날짜 및 시간 표시 형식을 구성하여 추적 분석을 도울 수 있습니다.
데이터 문제 해결
SQL Server Profiler를 사용하면 Duration, CPU, Reads 또는 Writes 데이터 열로 추적 또는 추적 파일을 그룹화하여 데이터의 문제를 해결할 수 있습니다. 예를 들어 잘 수행되지 않는 쿼리 또는 논리적 읽기 작업의 수가 비정상적으로 많은 쿼리 등의 데이터 문제를 해결할 수 있습니다.
추적을 테이블에 저장하고 Transact-SQL을 사용하여 이벤트 데이터를 쿼리하면 추가 정보를 얻을 수 있습니다. 예를 들어 어떤 SQL:BatchCompleted 이벤트의 대기 시간이 가장 긴지 확인하려면 다음을 실행하십시오.
SELECT TextData, Duration, CPU
FROM trace_table_name
WHERE EventClass = 12 -- SQL:BatchCompleted events
AND CPU < (Duration * 1000)
[!참고]
SQL Server 2005부터는 서버가 이벤트 기간을 마이크로초(1초의 1/1000000, 즉 10-6) 단위로 보고하고 이벤트에 사용되는 CPU 시간을 밀리초(1초의 1/1000, 즉 10-3) 단위로 보고합니다. SQL Server 2000에서는 서버가 기간과 CPU 시간을 모두 밀리초 단위로 보고했습니다. SQL Server 2005 이상에서는 SQL Server Profiler 그래픽 사용자 인터페이스가 기본적으로 Duration 열을 밀리초 단위로 표시하지만 추적을 파일이나 데이터베이스 테이블에 저장하면 Duration 열 값이 마이크로초 단위로 기록됩니다.
추적을 볼 때 개체 이름 표시
개체 식별자(개체 ID)보다는 개체 이름을 표시하려면 서버 이름 및 데이터베이스 ID 데이터 열을 개체 이름 데이터 열과 함께 캡처해야 합니다.
개체 ID 데이터 열로 그룹화하도록 선택한 경우 서버 이름 및 데이터베이스 ID 데이터 열로 먼저 그룹화하고 개체 ID 데이터 열로 그룹화합니다. 마찬가지로 인덱스 ID 데이터 열로 그룹화하도록 선택한 경우 서버 이름, 데이터베이스 ID 및 개체 ID 데이터 열로 그룹화한 다음 인덱스 ID 데이터 열로 그룹화합니다. 개체 및 인덱스 ID가 서버와 데이터베이스 간에 그리고 인덱스 ID에 대한 개체 간에 고유하지 않기 때문에 이러한 순서로 그룹화해야 합니다.
추적에서 특정 이벤트 찾기
추적에서 이벤트를 찾아 그룹화하려면 다음 단계를 수행하십시오.
추적을 만듭니다.
추적을 정의할 때 캡처하려고 하는 다른 데이터 열과 함께 Event Class, ClientProcessID 및 Start Time 데이터 열을 캡처하십시오. 자세한 내용은 방법: 추적 만들기(SQL Server 프로파일러)를 참조하십시오.
캡처한 데이터를 Event Class데이터 열로 그룹화하고 추적을 파일이나 테이블에 캡처하십시오. 캡처된 데이터를 그룹화하려면 추적 속성 대화 상자의 이벤트 선택 탭에서 열 구성을 클릭합니다. 자세한 내용은 방법: 표시된 열 추적으로 구성(SQL Server 프로파일러)을 참조하십시오.
추적을 시작한 다음 적절한 시간이 경과했거나 적절한 수의 이벤트가 캡처된 후에 중지합니다.
대상 이벤트를 찾습니다.
추적 파일이나 테이블을 열고 Deadlock Chain과 같은 원하는 이벤트 클래스의 노드를 확장하십시오. 자세한 내용은 방법: 추적 파일 열기(SQL Server 프로파일러) 또는 방법: 추적 테이블 열기(SQL Server 프로파일러)를 참조하십시오.
확인할 이벤트를 찾을 때까지 추적 데이터를 검색합니다. SQL Server Profiler에서 편집 메뉴의 찾기 명령을 사용하면 추적에서 값을 찾는데 도움이 됩니다. 추적하는 이벤트의 ClientProcessID및 Start Time데이터 열 값을 메모하십시오.
이벤트를 컨텍스트에 표시합니다.
추적 속성을 표시하고 Event Class 데이터 열보다는 ClientProcessID데이터 열로 그룹화합니다.
보려고 하는 각 연결 ID의 노드를 확장하십시오. 추적을 수동으로 검색하거나 찾기를 사용하여 이전에 메모한 대상 이벤트의 StartTime값을 찾으십시오. 이벤트는 선택한 각 클라이언트 프로세스 ID에 속하는 다른 이벤트와 함께 시간 순서대로 표시됩니다. 예를 들어 추적 내에 캡처된 Deadlock 및 Deadlock Chain이벤트는 확장 클라이언트 프로세스 ID에서 SQL:BatchStarting이벤트 바로 다음에 나타납니다.
동일한 방법을 사용하여 그룹화된 이벤트를 찾을 수 있습니다. 찾던 이벤트를 발견하면 ClientProcessID, ApplicationName 또는 다른 이벤트 클래스로 해당 이벤트를 그룹화하여 시간 순서대로 관련 작업을 확인합니다.