2010. 6. 4. 01:17

Profiler

 Profiler

  •  서버 및 데이터베이스 동작 모니터, 교착상태수, 치명적인 오류, 저자으로시저 및 Transact-SQL  문 추적, 로그인 동작 확인
  • SQL 프로필러 데이터를 SQL Server 테이블이나 파일에 캡처해서 분석가능
  • 캡처한 이벤트를 단계별로 재성
  •  SQL 프로필러는 일괄처리나 트랜잭션 시작과 같은 엔진 프로세스 이벤트를 추적할 수 있다.

템플릿

  • 나만의 템플릿을 만들어서 필요한 부분만 보자.
  • 이벤트 에서는 보안 감사/세션 정보는 제외해도 무관
  • 경고>> Execution Warnigs 는 성능에 나쁜 영향을 줄때 프로시저 내에서 발생하는 모든 에러를 반환한다. 한번씩 잡아 보는것도 괜찮다.
  • 기본1.tdf : 기본에 충실한 추적 템플릿

이벤트 범주

  • 저장프로시저 범주 : 저장프로시저 생성으로 발생하는 이벤트 컬랙션
    •  이벤트 클래스와 열의 상관 관계, 해당 이벤트를 가져와야 특정 정보가 발생한다.

 

  • TSQL: 클라이언트로부터 SQL Server 인스턴스로 전달되는 Transact-SQL 문을 실행함으로 생성되는 이벤트 클래스 컬렉션입니다.

 

  • 참고) 둘다 Batch가 아니라 단건을 해야 NestLevel, ObejctID를 가져올 수 있다.  이게 Read80Trace에서 있어야 분석이 가능한것 같음.
  • 잠금: 잠금을 얻거나 취소, 해제 시 생성되는 이벤트 클래스의 컬렉션입니다.
    •  잠금은 자주 발생하기 때문에 잠금 이벤트를 캡쳐하면 추적되는 서비스에 중대한 오버해드를 발생 할 수 있다.

 

Profiler 바로가기 키

Ctrl+Shift+Delete 추적 창 지우기
Ctrl+F4 추적 창 닫기
- 추적 그룹화 축소
Ctrl+C 복사
Alt+Delete 추적 삭제
+ 추적 그룹화 확장
Ctrl+F 찾기
F3 다음 항목 찾기
Shift+F3 이전 항목 찾기
F1 사용 가능한 도움말 표시
Ctrl+N 새 추적 열기
Alt+F7 설정 재생
Ctrl+F10 커서까지 실행
F5 재생 시작
F11 단계
Shift+F5 재생 중지
F9 중단점 설정/해제

 

파일/테이블 저장

추적파일을 테이블에 저장할 수 있다. 파일로 저장해서 쿼리로 문제가 되는 부분을 필터링해서 개체를 찾는데 도움이 된다.

select * from ::fn_trace_gettable('D:\gettable_test.trc',default)

SELECT IDENTITY(int, 1, 1) AS RowNumber, * INTO #temp_trc
FROM ::fn_trace_gettable('D:\gettable_test.trc', default)

SELECT * FROM #temp_trc

  • 분석하기

ALTER TABLE #temp_trc ADD sql varchar(6000)  : TextData는 text 타입이므로 정렬에 사용할 수 없으므로 변경

UPDATE #temp_trc SET sql = convert(varchar(6000), TextData)

select convert(varchar(80), sql), count(*) 횟수, avg(duration) dr, avg(cpu) c, avg(reads) r, avg(writes ) w
from #temp_trc
group by convert(varchar(80), sql)
order by count(*)  desc

 

Profiler 스크립트로 실행하기

  • 프로필러를 스크립트로 실행할 수 있다. UI로 실행하게 되면 아무래도 부하가 걸린다.
  • 필요한 이벤트, 컬럼을 지정해서 가능하다. 쉽게 하기 위해서는 자주 쓰는 템플릿을 불러와서 파일>>추적스크립트를 실행해서 변환을 하면 스크립트가 생성된다.
  • 추적은 다음과 같은 순서로 실행하면 된다.  
    • sp_trace_create: Trace를 생성한다.
    • sp_trace_setevent: 해당 Trace에 이벤트와 컬럼 명을 지정한다.
    • sp_trace_setfilter: 필터를 지정해서 원하는 값만 볼수 있다.
  • 추적이 실행되고 나서 상태확인/중지 
    • fn_trace_getfilterinfo : TraceId 정보를 확인할 수 있음
    •  sp_trace_status @TraceId, 0 : 추적중지 ->   sp_trace_status @TraceId, 2 : 추적 삭제
  •   스크립트 저장프로시저로 만들기 

 

 

이 글은 스프링노트에서 작성되었습니다.

'Common Admin' 카테고리의 다른 글

SQL Server의 Procedure Cache 사이즈  (0) 2010.06.04
Admin::master db rebuild 방법  (0) 2010.06.04
문서화되지 않은 프로시저  (0) 2010.06.04
Raid구성성능  (0) 2010.06.04